pthreads を使用して並列ソートを行っています。現在、私は 4 つのスレッドで作業しており、開始したばかりなので、現在、同じグローバル ロケーションにアクセスするスレッドはありません。(2 つの変数をグローバルに宣言しました。変数は大きなサイズの配列であり、2 つのスレッドが同じインデックスにアクセスしないようにしています。)
AASort 内で、別の関数が呼び出されています。このコードは、AASort 関数内で関数を呼び出さない場合に機能します。
unsigned int Numbers [N/4] [4];
unsigned int vMergedArray[NumProcs][64][4];
unsigned int v[NumProcs][2][4];
main()
{
/* Initialize array of thread structures */
threads = (pthread_t *) malloc(sizeof(pthread_t) * NumProcs);
assert(threads != NULL);
for(threadId=0; threadId < NumProcs; threadId++) {
ret = pthread_create(&threads[threadId], &attr, AASort, (void*) threadId);
assert(ret == 0);
}
for(threadId=0; threadId < NumProcs; threadId++) {
ret = pthread_join(threads[threadId], NULL);
assert(ret == 0);
}
}