2015-03-06 3 views
-1
#include <pthread.h> 
#include <stdio.h> 
#include <stdlib.h> 
#include <math.h> 


void *compute() { 

float total; 
int i; 
float oldtotal =0, result =0; 

for(i=0;i<1999999999;i++) 
{ 
    result =sqrt(1001.0)*sqrt(1001.0); 
} 

printf ("Result is %f\n", result); 
oldtotal = total; 
total = oldtotal + result; 

printf("Total is %f\n",total); 

return NULL; 


} 


int main() { 


pthread_t thread1, thread2; 

pthread_create(&thread1, NULL,compute, NULL); 

pthread_create(&thread2, NULL,compute, NULL); 


pthread_join(thread1, NULL); 
pthread_join(thread2, NULL); 

return 0; 
} 

Только один поток создается при запуске программы. Я проверил это, используя верхнюю команду в cmd, процесс работает на 197%, поэтому я считаю, что два процесса запускаются. Я помню, чтобы скомпилировать его с помощью флага -pthreads.Проблема создания нескольких потоков с pthreads

+0

Откуда вы знаете, что «создан только один поток»? –

+0

Если процесс работает со 100%, то у вас определенно есть несколько потоков. Команда 'top', по умолчанию, не показывает процессы только потоков. –

+0

Как разделить это, чтобы показать несколько процессов? –

ответ

0

197% = 2 нити, выполняющие cpu, выполняющие sqrt() в цикле, плюс один поток, который не использует никакого процессора, потому что он ждет, пока другие потоки закончатся в pthread_join().

Смежные вопросы