我的代码中含2个线程,并且在两个线程中要对一个链表用临界区来同步话,如在发送线程中要读链表元素,而在主要线程中要对链表中的元素进行维护,如删除一些旧的的元素,那么要实现同步化,这样行吗?请高手指点!
初始化好临界区变量
CCriticalSection m_cs;UINT _SendMsgThread(LPVOID lparam) //在发送线程中
{
 s_cs.Lock();
........
//含队列元素语句
......
 s_cs.UnLock();}void CCommunictionDlg::ProcessRecieveMessage()//主线程中的一个函数中,
                                             //主要是 修改链表中的元素
{
  
 s_cs.Lock();...........
..//含队列语句
......... s_cs.UnLock();
}另外,如果我有2个不同的链表,是不是还要声明一个临界区变量来实现呢?
如CCriticalSection s_cs;
其他的和上面雷同呢?谢谢!

解决方案 »

  1.   

    请问在对话框中如下语句的位置具体应该怎样?
    另外需另加的头文件需要哪些?1)CRITICAL_SECTION s_cs;
    2)InitialzeCriticalSection (&s_cs);
    3)EnterCriticalSection(&s_cs);
    4)LeaveCriticalSection(&s_cs);
    5)DeleteCriticalSection(&s_cs);
    谢谢!
      

  2.   

    Header: Declared in Winbase.h; include Windows.h.
      Library: Use Kernel32.lib.不过你刚刚不是说用MFC的 CCriticalSection 的吗?
    两个只要用一个就可以了呀
      

  3.   

    那个是这样的,我试过可以但是用CRITICAL_SECTION s_cs;好像没有成功