Cで簡単なことをしようとしていますが、混乱しています。プログラムはシンプルで、main 関数はジョブ que 構造体に従ってスレッドを処理します。一度に最大 4 つのスレッドを開きます。最後まで約300スレッド。スレッド関数は常に同じですが、引数は異なります。
ここに穴コードを貼り付けると少し長いので、一部貼り付けます。
スレッドは次のパラメータで開いています:pthread_attr_init(&attr);
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
pthread_create(&pth, &attr, dothejob, (void *) varis);
関数と呼ばれるスレッド
void *dothejob(void * varis){
unsigned char * arr1;
arr1 = (unsigned char*) calloc(3000000, sizeof (unsigned char));
unsigned char * arr2;
arr2 = (unsigned char*) calloc(3000000, sizeof (unsigned char));
// doing some calculations and comparisons and stuff
unsigned int topten[10];
// <---- here topten has some values from previous threads, but why ?
// picking top ten and putting it in the var topten[
free(arr1);
free(arr2);
pthread_detach(pthread_self());
}
誰かがそれを知っているなら、私を助けてください。前もって感謝します。