Библиотека сайта rus-linux.net
Цилюрик О.И. Linux-инструменты для Windows-программистов | ||
Назад | Библиотеки API POSIX | Вперед |
Временные затраты на создание потока
Теперь проделаем то же, что уже делалось при клонировании процесса, и сравним времена создания нового процесса и нового потока:
p2-2.c : #include <stdlib.h> #include <stdio.h> #include <pthread.h> #include "libdiag.h" static uint64_t tim; void* threadfunc ( void* data ) { tim = rdtsc() - tim; pthread_exit( NULL ); return NULL; }; int main( int argc, char *argv[] ) { tim = rdtsc(); pthread_t tid; pthread_create( &tid, NULL, threadfunc, NULL ); pthread_join( tid, NULL ); printf( "thread create time : %llu\n", tim ); exit( EXIT_SUCCESS ); };
Несколько циклов сравнительного выполнения (p2-1
- создание процесса, p2-2
- создание потока, запуски чередуем, чтобы уменьшить влияние кэширования страниц памяти):
$ ./p2-1 process create time : 525430 $ ./p2-2 thread create time : 314980 $ ./p2-1 process create time : 2472100 $ ./p2-2 thread create time : 362210 $ ./p2-1 process create time : 342490 $ ./p2-2 thread create time : 333800
Результаты абсолютно идентичный, в пределах статистической погрешности. Вывод: сам процесс создания и потока и процесса — требуют одинаковых затрат времени (вопреки многим утверждениям в учебниках).
Предыдущий раздел: | Оглавление | Следующий раздел: |
Параметры создания потока | Операции в потоке |