请教多线程间通讯的方法,MSDN里的话我不是很清楚如何实现,现贴于此?急待高手解答!!!
wkoji 2003-01-02 10:33:32 我在MSDN上找到如下“Windows 句柄映射
作为通用规则,线程只能访问它创建的 MFC 对象。这是因为临时和永久性 Windows 句柄映射保留在线程本地存储中,以对它进行保护,确保不能有多个线程同时访问它。例如,辅助线程不能执行计算并调用文档的 UpdateAllViews 成员函数来修改包含新数据视图的窗口。此操作将不会有任何效果,因为从 CWnd 对象到 HWND 的映射是主线程的本地映射。这意味着一个线程可能有从 Windows 句柄到 C++ 对象的映射,但是另一个线程可能会将此句柄映射到其他 C++ 对象。在一个线程内所做的更改将不会反映在另一个线程中。
有几种方式可以避免此问题。首先是将各个句柄(如 HWND)而不是 C++ 对象传递到辅助线程。然后,辅助线程通过调用适当 FromHandle 成员函数将这些对象添加到它的临时映射。还可以通过调用 Attach 将对象添加到线程的永久映射,但只有在保证对象比线程存在的时间长时,才应当进行此操作。”
希望有大侠能给我解释一下,最好有源代码。
我的函数调用如下
AfxBeginThread(WorkerThread,pClient_Socket_FileName);
pClient_Socket_FileName是一个结构指针,我希望通过在pClient_Socket_FileName
改变标志变量的方式来控制各个线程之间的运行情况,以及和主线程通讯.