我有一个多线程的系统。我想在一个线程中创建一个对象,并且在该线程中运行的每个对象都可以查看该对象。
实施例,
当我使用GetCurrentThreadID时,我总是得到相同的id,如果我从同一个线程调用它。
我想调用getSharedObject,如果我从同一个对象调用它,则总是看到相同的对象。所以我需要在一个内存位置写这个对象,同一个线程中的任何对象都可以看到这个对象。
有没有办法使用Windows API?或者我必须自己做?
谢谢!
答案 0 :(得分:2)
如果保存对象指针的变量是全局变量,则线程中的任何代码都可以访问它。而且,任何其他线程的代码也都可以。
如果您希望每个线程看到不同的对象,那么您需要线程本地存储。
请参阅win32函数TlsAlloc
,TlsSetValue
,TlsGetValue
和TlsFree
。
另请参阅__declspec( thread )
here。