С Новым годом! Форум программистов, компьютерный форум, киберфорум
Программирование мультимедиа
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
2 / 2 / 2
Регистрация: 23.02.2012
Сообщений: 208
1

Одинаковая очередность событий вне зависимости от количества потоков

09.04.2014, 15:42. Показов 666. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Предположим у нас есть массив из турелей и где то в середине его находятся турели А и Б. В цикле мы проходим по всем турелям и запускаем у них метод shootEnemy(). Поскольку турель А находится в массиве впереди Б, то она стреляет первой и убивает противника, до того как это сделает Б. А теперь представим, что мы разделили проход массива между двумя потоками и первая его половина вместе с А на конце обрабатывается в первом потоке, а оставшаяся половина с Б в начале обрабатывается во втором потоке. Теперь уже Б находится в начале и убьет противника раньше А. Как избежать такой ситуации, что бы в не зависимости от количества потоков, очередность событий не нарушалась?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.04.2014, 15:42
Ответы с готовыми решениями:

Очередность событий
Проходил try.jquery.com и не понял один из примеров $(document).ready(function() { ...

Очередность событий в потоке
Здравствуйте! Создаю в проекте winforms поток. В этом потоке происходит событие, которое я...

Очерёдность событий в разных браузерах
Имеется функция на javascript, вызывающая скрипт php на стороне сервера. На время выполнения этого...

Как указать очерёдность событий не через setTimeout?
Здравствуйте. Я получаю изображение, а затем пытаюсь получить его ширину:...

3
3460 / 1648 / 236
Регистрация: 26.02.2009
Сообщений: 8,050
Записей в блоге: 5
09.04.2014, 19:00 2
PlutDem, это вам надо почитать про Критические секции/атомарные ф-ии/события/семфоры/мьютексы

Не по теме:

А вообще странно лепить второй поток там где он не нужен.

0
2 / 2 / 2
Регистрация: 23.02.2012
Сообщений: 208
09.04.2014, 19:53  [ТС] 3
snake32, почитал, но если честно, не понял как это решает мою проблему. Критические секции/атомарные ф-ии/семфоры/мьютексы, например, избавят от возможности одновременного исполнения метода destroy() противника сразу несколькими потоками, т.е. кто первый застолбил тот и выполняет. Ну а события... Кто первым сообщил о попадании, тот и уничтожит противника. Так что, ИМХО, вопрос остается открытым.
А вообще странно лепить второй поток там где он не нужен.
Распределить нарузку между ядрами, увеличив производительность?
0
3460 / 1648 / 236
Регистрация: 26.02.2009
Сообщений: 8,050
Записей в блоге: 5
09.04.2014, 21:17 4
Цитата Сообщение от PlutDem Посмотреть сообщение
Распределить нарузку между ядрами, увеличив производительность?
Не уже ли так всё плохо?

Прежде чем параллелить нужно разобраться какая часть алгоритма тормозит сильнее всего(её и параллелить). Так как полностью весь алгоритм невозможно распараллелить ввиду его последовательного происхождения. Иначе вы потеряете больше на всякие синхронизации. И вместо ожидаемого увеличения производительности получите существенное замедление.
Можно попыться менять алгоритм так чтобы он более-менее подходил и к параллельным вычислениям и к вашей задаче. Но к сожалению это не всегда возможно.
0
09.04.2014, 21:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.04.2014, 21:17
Помогаю со студенческими работами здесь

С помощью сигналов организовать очередность записи двух потоков в файл.
Процесс 1 порождает потомка 2. Оба процесса открывают один и тот же файл и записывают в него в...

Обработка событий вне класса
Здравствуйте. Помогите оценить и дополнить решение. Суть такая: есть 3-4 таблицы, с похожей...

Отслеживание событий вне окна
Как сделать чтобы можно было обрабатывать события когда мышь находится вне окна? У меня за...

Имитация событий мышки вне формы
Добрый день! Подскажите, как реализовать следующее. Нужно сымитировать n-ное количество нажатий...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru