Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
 |  |
<без заголовка> 13.09.01 17:03 Число просмотров: 903
Автор: йцукенг <jcukeng> Статус: Member
|
2 ggg:
> не очень красивая ситуация; > два потока, из которых выполняется только один вопрос был поставлен вовсе не так.
речь шла не о поочередной работе 2-х потоков, а о поочередной работе некоторых частей этих потоков.
2 зю:
скажи подробнее, зачем тебе это надо.
может, что-нибудь придумаем...
|
|
<programming>
|
[Win32] WaitForFckingObject 11.09.01 00:12
Автор: зю Статус: Незарегистрированный пользователь
|
|
Народ, мне надо чтобы один поток ждал событие в занятом состоянии, а другой - свободном (то же самое событие). Кто въехал - отвечайте.
|
 |
[Win32] WaitForFckingObject 13.09.01 17:40
Автор: хобгоблин Вася Статус: Незарегистрированный пользователь
|
- если пофигу в какой последовательности выполняются потоки, то
одним событием можно обойтись
HANDLE Event=CreateEvent(.....);
func1() // - first thread
{WaitForSingleObject(Event,);
...
SetEvent(Event);}
func2() //second thread - тоже самое
{WaitForSingleObject(Event,);
...
SetEvent(Event);}
---------------------------------------------------------
-если стого поочереди выполняются потоки, то одним событием не обойдешься (ИМХО)
2 события - одного ждем, другое ставим:
HANDLE Event1,Event2;
SetEvent(Event1); //at begining
func1() // первый поток
{wait (Event1)
...
setEvent(Event2)}
func2() // второй поток
{wait(Event2)
...
setEvent(Event1)}
|
 |  |
Thanx! 14.09.01 04:00
Автор: зю Статус: Незарегистрированный пользователь
|
Да, спасибо, до второго варианта я уже сам доехал, вроде работает :)
Ситуация 2йцукенг : Один поток в цикле изменяет переменную, несколько потоков копируют эту переменную (внутри wait - set) и затем обрабатывают. Каждый поток должен получить свое уникальное значение переменной и все значения должны быть обработаны.
|
 |
[Win32] WaitForFckingObject 11.09.01 11:36
Автор: ggg <ggg> Статус: Elderman
|
> Народ, мне надо чтобы один поток ждал событие в занятом > состоянии, а другой - свободном (то же самое событие). Кто > въехал - отвечайте.
если я правильно понял, тебе нужно, чтобы один поток выполнялся после того как event станет сигнальным, а второй - после того как event станет не сигнальным
т.е. один из них обязательно будет выполняться сразу, а второй - ждать
ждать пока event перейдёт из сигнального состояние в несигнальное, кажется невозможно (я таких функций не встречал)
выход такой:
1) в этих потоках
do
{
WaitForSingleObject(event, INFINITE);
}
#ifdef THREAD1
while(flag);
#else
while(!flag);
#endif
2) в управляющей фукнции:
flag = true; // or =false
::PulseEvent(event);
желаю удачи :)
p.s.
не очень красивая ситуация;
два потока, из которых выполняется только один
может быть если чуть изменить логику программы, то от неё можно избавиться
|
 |  |
<без заголовка> 13.09.01 17:03
Автор: йцукенг <jcukeng> Статус: Member
|
2 ggg:
> не очень красивая ситуация; > два потока, из которых выполняется только один вопрос был поставлен вовсе не так.
речь шла не о поочередной работе 2-х потоков, а о поочередной работе некоторых частей этих потоков.
2 зю:
скажи подробнее, зачем тебе это надо.
может, что-нибудь придумаем...
|
|
|