只起了一个线程,该线程用到全局变量,请问要加锁不?
怎么加?麻烦举个例子?谢谢!

解决方案 »

  1.   

    传统的锁,我想有人会跟贴的,我个人比较喜欢用boost的线程及锁,干净,简明,扼要#include   <boost/thread/mutex.hpp>
    #include <boost/thread/thread.hpp>
    #include <boost/bind.hpp>
    boost::mutex s_mutex;
    int s_var;
    void mythread()
    {
      boost::mutex::scoped_lock lock(s_mutex);
      s_var++;
    }
    int main()
    {
      s_var = 0;
      boost::thread thd(boost::bind(mythread));
      thd.join();
    }
      

  2.   

    在多个线程中访问变量才需要加锁,只在一个线程中访问不用加锁
    简单的
    EnterCriticalSection(&cs);
    访问变量
    LeaveCriticalSection(&cs);