| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Системное программирование и WinAPI > Критические секции |
| Автор: Nudnik 29.3.2008, 13:38 | ||||
У меня есть главный процесс и вспомогательный поток. Я создаю дочерний поток и он выполянет функцию sumFunc.
У меня имеется 2 критические секции (именно с помощью критических функций мне необходимо произвести синхронизацию). Функция delegateThread занимается взаимодействием с потоком. Необходимо, чтобы поток с sumFunc работал постоянно, а когда нужно было выполнить содержимое функции sumFunc, то я бы вызывал delegateThread(). В главной функции (mainLogic) я 3 раза вызываю delegateThread и соответственно хочу, чтобы 3 раза исполнилось содерджимое функции sumFunc то есть:
То есть должен вывести: SUM SUM SUM Подскажите, как правильно в delegateThread и sumFunc расставить вход / выход в критические секции? |
| Автор: Nudnik 29.3.2008, 14:23 |
| Да, Sleep не даёт никаких гарантий. Просто у меня задача такова, что есть главный поток есть дочерний поток, который постоянно работает. Я из главного обращаюсь к дочернему, последний выполняет операции и в конце передает управление обратно главному. И так к дочернему потоку я могу обращаться много раз. Синхронизацию сделать обязхательно через критические секции. |
| Автор: baldina 29.3.2008, 14:34 |
| Nudnik, Тебе надо, что бы поток висел в памяти, желательно не занимая процессорного времени, а при наступлении события (команды) выполнял некие действия. Для этого используется Event. Читай про WaitFor...() функции. А критические секции и т.п. блокировки используются для обеспечения целостности доступа к данным. |
| Автор: korian 29.3.2008, 14:36 | ||
| сделать можно так: но как сказал baldina, для этого лучше использовать WaitFor... функции.
|
| Автор: baldina 29.3.2008, 14:40 | ||||
Это странно. Хотя и возможно - korian тебе показал как.
Добавлено через 43 секунды korian, пока я писал, ты уж тут |