информационная безопасность
без паники и всерьез
 подробно о проекте
Атака на InternetСтрашный баг в WindowsЗа кого нас держат?
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Модульный ботнет от русских хакеров 
 Торвальдс и вайбтестеры 
 Атака на GitHub 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Thanx! 14.09.01 04:00  Число просмотров: 906
Автор: зю Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Да, спасибо, до второго варианта я уже сам доехал, вроде работает :)

Ситуация 2йцукенг : Один поток в цикле изменяет переменную, несколько потоков копируют эту переменную (внутри wait - set) и затем обрабатывают. Каждый поток должен получить свое уникальное значение переменной и все значения должны быть обработаны.
<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 зю:
скажи подробнее, зачем тебе это надо.
может, что-нибудь придумаем...
1





Рейтинг@Mail.ru


  Copyright © 2001-2026 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach