저는 리눅스에서 C와 함께 pthreads
을 사용하는 데있어 초보입니다. 개인 스레드 변수 을 만들고 사용해야합니다.스레드의 전용 변수
예를 들어 설명해 드리겠습니다. 다음 코드에서는 4 개의 스레드를 만들고, 각 스레드는 개인 변수 foo
을 생성하므로 총 4 개의 foo
개의 변수가 각 스레드마다 하나씩 생성됩니다. 각 스레드는 자신의 foo
변수 만 "볼"수 있고 다른 변수는 그렇지 않습니다. 예를 들어 스레드 1
이 foo = 56
으로 설정되고 doStuff
을 호출하면 doStuff
은 56
을 인쇄해야합니다. 2
스레드가 foo = 99
으로 설정되고 doStuff
을 호출하면 doStuff
은 99
을 인쇄해야합니다. 그러나 스레드 1
이 다시 doStuff
을 호출하면 56
을 다시 인쇄해야합니다.
void doStuff()
{
printf("%d\n", foo); // foo is different depending on each thread
}
void *initThread(void *threadid)
{
// initalize private thread variable (foo) for this thread
int foo = something;
printf("Hello World! It's me, thread #%ld!, %d\n", (long) threadid, x);
doStuff();
}
int main()
{
pthread_t threads[4];
long t;
for (t = 0; t < 4; t++){
printf("In main: creating thread %ld\n", t);
pthread_create(&threads[t], NULL, initThread, (void *) t);
}
pthread_exit(NULL); /* support alive threads until they are done */
}
pthreads
를 사용하여 (기본적으로 개인 실 변수의 생각이다)이 작업을 수행하는 방법에 어떤 아이디어?
+1 - 너무 오래 pthreads에서 벗어났습니다. lib의 일부로 제공되는 것을 완전히 잊어 버렸습니다. –
감사합니다! '__thread'가 더 쉬운 길로 보인다. 'struct's에 대해서도 제안해야합니까? –