Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: помогите с потоками  (Прочитано 10536 раз)
0 Пользователей и 1 Гость смотрят эту тему.
student87
Гость
« : 17-06-2007 12:44 » 

Не могу написать прогу, запускающую два потока одновременно. Нужно использовать событие. Помогите пожалуйста. А черт его знает...
Записан
Sel
Злобный
Администратор

ru
Offline Offline

« Ответ #1 : 17-06-2007 12:45 » 

student87, свои наработки в студию. Улыбаюсь
Записан

Слово не воробей. Всё не воробей, кроме воробья.
npak
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 18-06-2007 09:49 » 

мы тоже не можем. надо, как минимум, точную постановку задачи.
Записан

UniTesK -- индустриальная технология надежного тестирования.

http://www.unitesk.com/ru/
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #3 : 18-06-2007 13:54 » 

Ну а чего? Запустить (в смысле создать) одновременно не получится. А вот управлять можно. Те я так думаю.
ПОтоки создаются последовательно, но сразу же ждут event по WaitForSingleObject с параметром INFINTE.

Я бы так сделал.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
npak
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 18-06-2007 14:52 » 

Так это задача синхронизации потоков, а не одновременного запуска.  К моменту WaitFor... оба потока уже выполняются.
Записан

UniTesK -- индустриальная технология надежного тестирования.

http://www.unitesk.com/ru/
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #5 : 18-06-2007 16:34 » 

А если создать два потока (последовательно, по другому я не могу представить как?) заставить их ждать событие, а по нему каждый поток создаст ещё по одному потоку. Получится "почти" одновременно. Ага
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #6 : 18-06-2007 18:04 » 

мне кажется в задаче нет условия создать одновременно потоки (в смысле - "в одно мгновение оба потока") Улыбаюсь
Автор что то другое хочет. Ждём-с его выхода...
Записан

npak
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #7 : 19-06-2007 14:17 » 

Джон, ещё необходимо гарантировать, что к моменту срабатывания события оба потока уже встали в WaitFor.

В принципе, для этого придуман примитив синхронизации барьер, но в винде нет встроенной реализации.
Записан

UniTesK -- индустриальная технология надежного тестирования.

http://www.unitesk.com/ru/
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #8 : 19-06-2007 14:23 » 

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

npak
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #9 : 20-06-2007 12:45 » 

Барьер блокирует потоки, если число захвативших его потоков меньше некоторого порога, и освобождает все захваченные потоки, когда число захвативших потоков становится равным порогу.

Семафор работает наоборот - он запирается, когда число захвативших его потоков превышает некоторый порог.
Записан

UniTesK -- индустриальная технология надежного тестирования.

http://www.unitesk.com/ru/
p_serg
Гость
« Ответ #10 : 30-07-2007 20:02 » 

Можно попробовать, как сдесь уже говорили, синхронизировать событием и WaitFor..., но при этом создать потоки приостановленными, а событие в сброшенном состоянии. При запуске потоков они начнут ожидание события и затем примут его почти одновременно. Но это в теории:).
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines