我需要创建一个线程
如果List不为空, 就遍历List.
在主线程里可以向List添加元素..
但是线程把List死锁了, 主线程向List添加的时候会卡住..
也不知道主线程卡住是不是因为线程独占了List的原因....
以下问题才是重点..我创建两个线程, 同时执行cout << "123" << endl;
但是输出的时候并不是
123
123
...
这样输出, 而是两个线程都把123拆开混乱输出了..
请问要怎么解决这个问题呢???

解决方案 »

  1.   

    我创建两个线程, 同时执行cout << "123" << endl;
    这个得同步但是线程把List死锁了, 主线程向List添加的时候会卡住..
    锁住资源的时候,代码尽量少,时间尽量短
      

  2.   

    我创建两个线程, 同时执行cout << "123" << endl;
    但是输出的时候并不是
    123
    123
    ...
    这样输出, 而是两个线程都把123拆开混乱输出了..
    请问要怎么解决这个问题呢???
    这个问题解决了.前面那个怎么向线程里的List添加元素还没有解决...
    我想要线程循环遍历List, 主线程添加元素.
    线程遍历完一次就更新List.
    要怎么解决呢???大概讲下思路就好了.
      

  3.   

    1.CMutex
    2.CEvent
    3.Critical Section (不支持进程同步)
    4.Semaphore4个关键字随便挑一种,搜索,例子应该都很全吧