0
1つのプロセス内でいくつかのジョブを並列に実行したいとします。 何らかの理由で私が作成したスレッドは一度だけ実行されますので、間違いがどこにあるのか理解してください。Cスレッドは一度だけ実行されます
#include <stdio.h>
#include <pthread.h>
#include <unistd.h>
void * print_thread (void * var)
{
int *p_var = (int *)var;
printf("this is a thread %d\n", ++(*p_var));
}
int main()
{
int x=0;
pthread_t thread1;
if(pthread_create(&thread1, NULL, print_thread, &x))
{
fprintf(stderr, "Error creating thread\n");
return 1;
}
while (1)
{
usleep(100000);
}
return 0;
}
# gcc -o thread pthread_example.c -lpthread
# ./thread
this is a thread 1
スレッドを1つ作成するので、通常は1回だけ実行されます。正確に何を期待していますか? 'if(pthread_create(&thread1、NULL、print_thread、&x))'の回りに 'for(x = 1; x
なぜそれが複数回実行されると思われますか? – Marievi
これは私のための新しいことです、私は今それを得ました。どうもありがとう。 – sergeyrar