Win32API多线程基本理论

一:临界区

      临界区的出现形式是一小段代码,这一小段代码包含互斥资源。临界区也有一定的局限性:它只能用于同步单个进程中的线程。
      使用临界区的基本步骤如下:
      (1)分配一个CRItICAL_SECTION结构。这一结构必须是全局的,因为它必须保障不同的线程来访问。
      (2)初始化临界区。
      (3)在不同线程中使用临界区。
      (4)程序结束时清除CRItICAL_SECTION变量。
二:互斥量
      互斥量与临界区相识,临界区的使用非常简单,但不能用于进程间数据的同步,互斥量则可以用于进程间诗句的同步。
      使用互斥量的基本步骤如下:
      (1)使用函数CreateMutex()创建互斥量。
      (2)在不同线程或进程中使用互斥量,这里主要用到两个函数:WaitForSingleObject用来代替使用临界区时的EnterCritecalSection,ReleaseMutex用于代替LeaveCriticalSection。
      (3)程序结束时清除互斥量。
三:事件
      互斥量和临界区用于控制对数据的访问,而事件用来发信号表示某一操作已经完成。事件对象有两种:人工重设事件和自动重设事件。人工重设事件不会被WaitForSingleObject和WaitForMultipleObject函数自动重设为无信号状态。对于互斥量来说,当线程调用WaitForSingleObject或WaitForMultipleObject函数时,等待互斥量变为有信号,然后又自动将互斥量重设为无信号状态,这样能确保不会多于一个正在等待此信号量的线程被唤醒来继续执行。

你可能感兴趣的:(Win32API多线程基本理论)