Можно ли перейти к концу выделенного процессу кванта времени? У меня есть программа, которая работает параллельно на части общей памяти, а затем все процессы должны дождаться завершения и синхронизации других процессов перед следующим шагом. Каждый процесс будет выполнять максимум на одну итерацию больше, чем любой другой, поэтому любые временные различия минимальны.
microsleep почти работает, но я почти уверен, что даже usleep(1) займет больше времени, чем мне хотелось бы (на данный момент я могу выполнить 5000 раз примерно за 1,5 секунды, так что это добавит к тесту около 20 мс).
Какое-то занятое ожидание кажется плохой идеей, хотя это то, с чем я могу в конечном итоге пойти.
Чего бы я действительно хотел, так это чего-то вроде
while(*everyoneDone != 0) {
//give up rest of this time-quantum
}
Это не должно быть в реальном времени, это просто должно быть быстро. Любые идеи?
Обратите внимание, что это будет выполняться на многопроцессорной машине, потому что, если есть только одно ядро для работы, существующая однопоточная версия будет работать лучше.