Как распараллелить процессы

  • Автор темы Автор темы Folderx
  • Дата начала Дата начала
Мы в своё время для кроссплатформа использовали библиотеку omnithread. Она была, кажется, частью CORBA. Довольно удобная хрень. Правда было это давно, возможно, сейчас есть что-то получше.
 
Для: Kmet
Для: Folderx
Для: Pasha
Господа, давайте не будем переходить на личности
 
UNIX: Практически в каждой книге по программированию в этой среде есть описание потоков. Это примеры из кники "UNIX: Взаимодействие процессов" Посмотреть вложение site.zip
Win32: Для синхронизации нитей (процессов) используются семафоры. Это примеры из "Windows 200 API" от мелкософта Посмотреть вложение Semaphore.zip
Вот только сама задача: Сводили нашу команду недавно с работниками голубого экрана, которые выдвигали довольно интересный проект и просили выдать им идеи реализации, сроки и затраты. Когда больше чем пространственно и на техническом языке выдали возможность этой самой реализации, то выяснилось, что для всего этого бабла спонсоры не дают - так и разошлись (месяц мозги трах...).

Очень похожее задание - там тоже было требование синхронных видеопотоков с переключением в реальном времени, а наша реализация подразумевала UNIX-сервер. Если это они же, то не советую связываться.
 
<!--QuoteBegin-garrymax+6:11:2007, 12:30 -->
<span class="vbquote">(garrymax @ 6:11:2007, 12:30 )</span><!--QuoteEBegin-->Очень похожее задание - там тоже было требование синхронных видеопотоков с переключением в реальном времени, а наша реализация подразумевала UNIX-сервер. Если это они же, то не советую связываться.
[snapback]84399" rel="nofollow" target="_blank[/snapback]​
[/quote]
мне казалось, что технология video/audio streaming'a уже вполне отработана...
 
Для: garrymax
Win32: Семафоры, а еще мьютексы, события, критические секции, InterlockedXxx, ... И когда человека посылаешь это читать, он отвечает: "не знаешь - не пиши ничего, лучше скажи куда циклы засунуть чтобы они одновременно завершались".
 
Для: Pasha
Был обобщенный вопрос - дал обобщенный ответ, а вариантов столько, что ткнуть пальцем трудновато

Самое простое, когда ждешь завершения процесса - создаешь точку проверки (тот самый цикл) и проверяешь состояние процесса (хоть и давно писал, но помню - я пользовался функцией GetExitCodeThread) .

Если я правильно понял претензию к примерам и такой вариант подходит, то могу четко показать на такой пример из присланного - там точно он был. Могу поискать и для юникса аналогичный вариант - тоже когда-то писал.

Для Kmet
Синхронные видеопотоки поддерживает тока MPEG2 (DVD) и заложено в OGM, но на практике я такого применения не видел (не попадалось еще не одного двд-диска с возможностью переключения камер обзора, а для порнухи было бы круто :) ). А те, о ком упоминал, хотели сделать аналог этому в своей свере применения - как раз вывод потоков с переключением видимого и с запоминанием этих переключений для последующего воспроизведения - мало кому это требуется, если уже существующий формат не подходит. Вот и возник вопрос.
 
Для: garrymax
Никаких претензий к примерам. Просто невозможно объяснить основы работы с процессами человеку, который считает что он и так все знает. И при этом считает что потоки действительно выполняются одновременно и непрерывно.
А по поводу GetExitCodeThread в цикле - можно просто ждать завершения потока или потоков функциями WaitForXXX.
 
<!--QuoteBegin-Pasha+-->
<span class="vbquote">(Pasha)</span><!--QuoteEBegin-->Никаких претензий к примерам. Просто невозможно объяснить основы работы с процессами человеку, который считает что он и так все знает.[/quote]
Это уже ты ошибаешься

<!--QuoteBegin-Pasha+-->
<span class="vbquote">(Pasha)</span><!--QuoteEBegin-->Никаких претензий к примерам.[/quote]
А ты их открывал вообще ? :rolleyes:

Короче я вообще всё по-другому сделал, именно так как и говорили вначале, типа "дописал лодку во все функции", а когда сделал разные потоки, оказалось что там надо ставить тригеры (семафоры которые) я подумал а нафига они нужны тогда, если я эти тригеры могу на обычных переменных выставить, так что garrymax дал самый исчерпывающий ответ, поизучаю его инфу потом
 
<!--QuoteBegin-Folderx+22:11:2007, 23:49 -->
<span class="vbquote">(Folderx @ 22:11:2007, 23:49 )</span><!--QuoteEBegin-->а нафига они нужны тогда, если я эти тригеры могу на обычных переменных выставить
[snapback]87033" rel="nofollow" target="_blank[/snapback]​
[/quote]1. Операции с обычными переменными не атомарны. Например, нет гарантии что после i++ i увеличится на 1.
2. Семафоры, и прочие объекты ядра можно ждать через WaitForXXX. Ожидание при этом не ест процессорное время. А ожидание изменения твоих переменных - это цикл, который будет грузить проц на 100%.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!