Наши партнеры








Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

На главную -> MyLDP -> Электронные книги по ОС Linux
Цилюрик О.И. 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 

Результаты абсолютно идентичный, в пределах статистической погрешности. Вывод: сам процесс создания и потока и процесса — требуют одинаковых затрат времени (вопреки многим утверждениям в учебниках).


Предыдущий раздел: Оглавление Следующий раздел:
Параметры создания потока   Операции в потоке