Я начинаю использовать pthreads
с C в Linux. Мне нужно создать и использовать частные переменные потока .
Позвольте мне объяснить, что именно мне нужно, на примере. В следующем фрагменте кода я создаю 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
?