![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| compaq |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 78 Регистрация: 20.11.2006 Репутация: нет Всего: нет |
Всем привет.
В общем, задача такая запустить 4 потока, причем 3 из них должны обращаться в произвольном порядке к четвёртому. Допустим, что 3 потока это функции, а четвёртый это генератор случайных чисел и когда какой либо функции понадобится число, то она обращается к четвёртому потоку за числами. И ещё первые 3 потока должны проверять, не занят ли четвёртый и если занят то подождать какое-то время и снова его запросить, то есть должно быть что-то на подобии семафора в ОС. Вопрос как можно вызвать четвёртый поток из кода тех трёх и каким образом можно реализовать семафор. |
|||
|
||||
| marcusmae |
|
|||
![]() stravaganza ![]() ![]() Профиль Группа: Участник Сообщений: 874 Регистрация: 26.3.2006 Репутация: 5 Всего: 39 |
Привет, compaq,
в пространстве имён System.Threading есть класс Semaphore (если у тебя 2005ая студия). Там даже есть пример кода структурно напоминающий твою задачу. Только начинить Worker-а своим кодом. Возможно, стоило бы попробовать с ним поиграться и, если возникнут вопросы, спросить здесь Это сообщение отредактировал(а) marcusmae - 4.10.2007, 23:32 -------------------- ἀπὸ μηχανῆς θεός |
|||
|
||||
| archeg |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 612 Регистрация: 6.1.2007 Где: Киев Репутация: 4 Всего: 27 |
Если я правильно понял, тебе нужны классы AutoResetEvent и ManualResetEvent. Накатал пример:
З.Ы. Если где-то слабанил - не судите срого, не так уж и часто пишу многопоточные приложения с такими блокировками ) -------------------- ИМХО задница есть универсальный интерфейс. Ибо через задницу можно сделать абсолютно ВСЕ (bash.org.ru) Дядька всегда можно спросить в аське, если не задалбывать - не откажет И вообще, на самом деле я студент, и ненавижу обращение на "Вы") Тут все свои ;) |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | .NET для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |