以下のコードから、出力の回答は8
のみですか?他にどのような可能な出力がありますか(説明は素晴らしいでしょう)?異なる可能なプログラム出力?
int i = 0;
void *doit(void *vargp) {
i = i + 5;
}
int main() {
pthread_t tid;
pthread_create(&tid, NULL, doit, NULL);
i = i + 3;
pthread_join(tid, NULL);
printf("%d\n", i);
}
テストしましたか? – Carcigenicate
あなたのプログラムは、複数のスレッドからのオブジェクトへの読み取り不能で非原子的で非同期のアクセスを持つため、動作は未定義です。したがって、プログラムは全く無意味です。プログラムから何らかの出力がある必要はなく、存在する場合、出力が「象」であることは完全に許容されます。 – EOF
@EOFこれは練習問題の1つです。与えられたコードに基づいて、出力は3か8のどちらかになりますか? – ssss