メインスレッドで5つのスレッドを作成しようとしています。pthread_create未定義変数
pthread_create()関数では、毎回関数 'up'に変数として増加する 'num'値を渡しているので、各スレッドのyの値は1,2,3,4とする必要があります。 5をそれぞれランダムな順序で含む。
しかし、yの値をチェックする関数 'up'のprintf( "numを前に追加する%d \ n"、y)がyが未定義であることを示しています1から5までの数字。
このパラレル入力の問題を解決するにはどうすればよいですか。
const int TOTAL_RUNS = 1000000;
void *up(void *ptr) {
int i;
int y = *((int*)ptr);
printf("before add num is %d\n", y);
for (i = 0; i < TOTAL_RUNS; i++)
y++;
printf("Finished adding 1 a total of %d times.\n", TOTAL_RUNS);
}
void main() {
int num = 1;
pthread_t t[5];
int i;
for (i = 0; i < 5; i++) {
pthread_create(&t[i], NULL, up,(void*) &num);
num++;
}
for (i = 0; i < 5; i++) {
pthread_join(t[i], NULL);
}
}
http://stackoverflow.com/q/9498440/841108また私の返信http://stackoverflow.com/a/9498820/841108 –