스레드를 동기화하려고 할 때 문제가 있습니다. 나는이 프로그램을 실행하면C에서 스레드를 동기화 할 수 없습니다
static void* CarProcess(void *str);
int main()
{
thread_t *pthreadsArray;
pthreadsArray = (thread_t*)malloc(sizeof(thread_t) * 10);
for (int i = 0; i < 10; i++)
{
int pthread = mythread_create(&pthreadsArray[i], NULL, CarProcess, i);
}
for (int i = 0; i < 10; i++)
{
mythread_join(pthreadsArray[i], NULL);
}
}
static void* CarProcess(void *str)
{
while(1){
printf("Thread ID: %i\n", str);
}
}
, 나는이 출력이 :
Thread ID: 0
Thread ID: 0
Thread ID: 0
Thread ID: 0
...
을하지만 결코 "스레드 ID : 1"표시되지 않습니다 "스레드 ID : 2", "스레드 나는 다음 코드를 ID : 3 ".... 또는"스레드 ID : 9 ". 나는 뮤텍스를 사용하여 뮤텍스를 잠그고 풀어 낼 수 있다고 생각합니다. 어떤 신체가 그것을 해결하는 방법을 알고 있습니까? 감사합니다
관련없는을, 하지만 실제 프로그램에 동적 인 스레드 수가 있다고 가정합니까? 그렇지 않으면'malloc'을 사용하는 것은 불필요하며 일반 배열을 사용할 수 있습니다. –
또한,'mythread_create'와'mythread_join'은 무엇입니까? –
@ JoachimPileborg, 고마워요하지만 스레드에 대해 많이 몰라 보인다. 만들기 및 조인 스레드 라이브러리에서 함수입니다. –