我對我寫了一個小程序運行一些測試。它運行另一個程序,它根據我給它的輸入執行一些文件操作。這一計劃的全部目的就是要打破工作的一個大包成小包,以提高性能(發送10小包10個版本的程序,而不是等待一個更大的一個來執行,簡單的分而治之的)。不確定爲什麼會產生這麼多線程
問題在於這樣一個事實,雖然我相信我已經限制了將要創建的線程數,我已經設置了測試消息表明有許多不是應該有運行多個線程。我很確定我在這裏做錯了什麼。
代碼片斷:
if (finish != start){
if (sizeOfBlock != 0){
num_threads = (finish - start)/sizeOfBlock + 1;
}
else{
num_threads = (finish-start) + 1;
}
if (num_threads > 10){ // this should limit threads to 10 at most
num_threads == 10;
}
else if (finish == start){
num_threads = 1;
}
}
threads = (pthread_t *) malloc(num_threads * sizeof(pthread_t));
for (i = 0; i < num_threads; i++){
printf("Creating thread %d\n", i);
s = pthread_create(&threads[i], NULL, thread, &MaxNum);
if (s != 0)
printf("error in pthread_create\n");
if (s==0)
activethreads++;
}
while (activethreads > 0){
//printf("active threads: %d\n", activethreads);
}
pthread_exit(0);
好吧,也許你應該打印出來NUM_THREADS的價值,不是嗎? – OldProgrammer
你malloc的線程數,但我沒有看到一個免費的()。 – hetepeperfan