использование clock() в качестве потока для синхронизации других потоков

Я новичок в планировании и многопоточности в c и пытаюсь реализовать 20 потоков для обработки моих процессов в планировщике MLFQ на языке C. Я хочу, чтобы мой 21-й поток был тактовым потоком и синхронизировал все время прибытия, выполнения и завершения.

Как сделать последний поток тактовым? и это простой способ подключить последний поток ко всем потокам процесса?

Изменить 1. для потока часов: -
21-й поток
Доступен для остальных 20 потоков, чтобы они могли рассчитать время своего прибытия, выполнения, завершения и т. д.
Предполагается, что часы просто дают время остальным потоки с регулярными интервалами, чтобы они функционировали соответственно


person Bhavna    schedule 27.10.2014    source источник
comment
Что должен делать часовой поток?   -  person Basile Starynkevitch    schedule 27.10.2014


Ответы (1)


В Linux сначала прочитайте time(7) и pthreads(7) и sched(7) & сигнал(7). Затем используйте pthread_getcpuclockid(3) и clock_gettime(3). Помните, что планировщик ядра может в любой момент перенести любой поток с одного процессора на другой! См. также другие системные вызовы(2), в частности sched_setaffinity(2), pthread_setaffinity_np(3), cpuset(7), proc(5)

В вашем потоке часов может быть цикл обработки событий с использованием poll(2).

person Basile Starynkevitch    schedule 27.10.2014