KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I am writing a simple application that uses Threads to increase the performance. The problem is, that this application runs fine on windows, using the 2 cores that my CPU has. But When I execute on Linux, It seems that only uses 1 Core. I can't understand why this happens. These is my code, C++: #include <stdio.h> #include <stdlib.h> #include <pthread.h> #include <time.h> void* function(void*) { int i=0; for(i=0; i<1110111; i++) rand(); return 0; } void withOutThreads(void) { function(0); function(0); } void withThreads(void) { pthread_t* h1 = new pthread_t; pthread_t* h2 = new pthread_t; pthread_attr_t* atr = new pthread_attr_t; pthread_attr_init(atr); pthread_attr_setscope(atr,PTHREAD_SCOPE_SYSTEM); pthread_create(h1,atr,function,0); pthread_create(h2,atr,function,0); pthread_join(*h1,0); pthread_join(*h2,0); pthread_attr_destroy(atr); delete h1; delete h2; delete atr; } int main(void) { int ini,tim; ini = clock(); withOutThreads(); tim = (int) ( 1000*(clock()-ini)/CLOCKS_PER_SEC ); printf("Time Sequential: %d ms\n",tim); fflush(stdout); ini = clock(); withThreads(); tim = (int) ( 1000*(clock()-ini)/CLOCKS_PER_SEC ); printf("Time Concurrent: %d ms\n",tim); fflush(stdout); return 0; } Output on Linux: Time Sequential: 50 ms Time Concurrent: 1610 ms Output on Windows: Time Sequential: 50 ms Time Concurrent: 30 ms
Tags (comma-separated)
Save Edits
Cancel