Библиотека сайта 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
Результаты абсолютно идентичный, в пределах статистической погрешности. Вывод: сам процесс создания и потока и процесса — требуют одинаковых затрат времени (вопреки многим утверждениям в учебниках).
| Предыдущий раздел: | Оглавление | Следующий раздел: |
| Параметры создания потока | Операции в потоке |
