Threads - Совместное использование переменных - PullRequest
1 голос
/ 27 сентября 2011

У меня система многопоточная. Я хочу создать объект в потоке, и каждый объект, который запускается в этом потоке, может просматривать этот объект.

Пример,

Когда я использую GetCurrentThreadID, я всегда получаю один и тот же идентификатор, если я вызываю его из одного потока.

Я хочу вызвать, например, getSharedObject и всегда видеть один и тот же объект, если я вызываю его из одного и того же объекта. Поэтому мне нужно записать этот объект в ячейку памяти, чтобы любой объект внутри того же потока мог видеть этот объект.

Есть ли способ сделать это, используя Windows API? Или я должен сделать это сам?

спасибо!

1 Ответ

2 голосов
/ 27 сентября 2011

Если переменная, в которой вы сохраняете указатель объекта, является глобальной, то любой код в вашем потоке может получить к ней доступ.И любой код из любого другого потока тоже может в этом отношении.

Если вы хотите, чтобы каждый поток видел отдельный объект, тогда вам нужно локальное хранилище потока.

См. Функции win32 TlsAlloc, TlsSetValue, TlsGetValue и TlsFree.

См. Также __declspec( thread ) здесь .

...