1
Я пытаюсь передать в каждый поток структуру и каждый поток распечатать значение внутри структуры и показать, что он уникален для каждого потока.Уникальное значение в потоке POSIX
Моя проблема заключается в том, что каждая нить печатает такое же значение, даже если я изменить правильное значение перед передачей его в.
const int NUM_THREADS = 2;
struct number
{
int uniqueNumber;
};
void* showUniqueNumber(void* numberStruct);
int main()
{
pthread_t threadID[NUM_THREADS];
number* numberPtr = new number();
for(int i=0; i < NUM_THREADS; i++)
{
numberPtr->uniqueNumber = i;
pthread_create(&threadID[i], NULL, showUniqueNumber, (void*)numberPtr);
}
for(int i=0; i < 5; i++)
{
pthread_join(threadID[i], NULL);
}
return 0;
}
void* showUniqueNumber(void* numberStruct)
{
number* threadPtrN = (number*)numberStruct;
cout << threadPtrN->uniqueNumber << endl;
return (void*)0;
}
спасибо за это, я мог задать вопрос здесь, не создавая новую должность, так как связанные с ним: Что делать, если я имел 2 структур, одна из них должна была быть разделена между всеми потоками и другой уникальный, как тот, что выше? как бы я передал оба потока, поскольку он принимает только пустоту * Если вы знаете этот ответ, то это здорово! – user7195486
@ user7195486 Вы должны сделать другой вопрос, я не могу сделать правильный ответ в комментарии. У вас должна быть структура, содержащая эти два данных. Подобно этому, например, 'struct all {struct foo * shared, struct bar not_shared};' – Stargateur
удивительный, задаст другой вопрос, спасибо за краткий ответ – user7195486