多线程编程1 线程同步

多线程编程1 线程同步
  不得不承认,自从上一次做一个gps项目后,再也没有使用过多线程的知识,前几天被问到这方面的东西,竟然都想不起来,又查了些资料,加强下记忆,在此后的日子里我要建成我自己的一个封装程序库,希望也会有一个线程库。
  线程的同步方式:
  1.临界区  CRITICAL_SECTION

  一个简单的例子:
  CRITICAL_SECTION g_cs;//声明一个临界区
   char  g_Array[10];//共享资源

   UINT threadFunc1(void* pParam)
   {
         //进入临界区
         EnterCriticalSection(&g_cs);
         for(int i=0;i<10;++i)
         {
               //操作共享资源
                 g_Array[i] = 1;
         }
         //离开临界区
         LeaveCriticalSection(&g_cs);
         return 0;
    }

   UINT threadFunc2(void* pParam)
   {
         //进入临界区
         EnterCriticalSection(&g_cs);
         for(int i=0;i<10;++i)
         {
               //操作共享资源
                 g_Array[i] =2;
         }
         //离开临界区
         LeaveCriticalSection(&g_cs);
         return 0;
    }
  
    main()
   {
         //初始化临界区
         InitializeCriticalSection(&g_cs);
         //启动线程
         AFXBeginThread(threadFunc1);
         AFXBeginThread(threadFunc2);

         //等待计算
         Sleep(100);
}


   2.互斥体

你可能感兴趣的:(多线程编程1 线程同步)