У нас есть механизм рабочих процессов на основе qthreads, в котором рабочие потоки выбирают пакеты входных данных, когда они помещаются в очередь, а затем помещают свои выходные данные в другую очередь, чтобы другие рабочие потоки могли запустить следующий этап; и так далее, пока все входные данные не будут использованы и все выходные данные будут сгенерированы.
Как правило, несколько потоков будут выполнять одну и ту же задачу, а другие будут выполнять другие задачи одновременно. Мы хотим сравнить производительность этих многопоточных задач с целью оптимизации.
Легко получить реальное (истекшее) время, которое занял данный поток, выполняя данную задачу. Мы просто рассмотрим разницу между возвращаемыми значениями функции POSIX times () в начале и в конце процедуры run () потока. Тем не менее, я не могу понять, как получить соответствующее пользовательское и системное время. Получение их из struct tms
, которое вы передаете в times (), не работает, потому что эта структура дает общее пользовательское и системное время всех потоков, запущенных, когда рассматриваемый поток активен.