多线程信号处理,多线程信号量的定义和作用

  多线程信号处理,多线程信号量的定义和作用

  信号量多线程主要用于同步线程或者限制线程运行的数量。

  所谓同步,当进程1在线程1中运行,进程2在线程2中运行时,进程1结束后进程2才能执行。你会怎么做?你需要做的就是给出一个信号,过程1结束了。

  在信号到来之前,让线程2在某个位置等待。这种用法有点类似于互斥,在某种意义上也是一种同步,但互斥更倾向于保护公共资源。当信号量大于0时,表示有信号。不需要等待,但不仅仅是1。

  以下示例设置了三个线程,当设置了最大值时,只有两个进程运行。

  #包含Windows.h

  #包括iostream

  使用命名空间std

  //创建信号量

  处理hSemaphore

  //有参数

  DWORD WINAPI myth read 2(LPVOID lpparameter)

  {

  while (1)

  {

  WaitForSingleObject(hSemaphore,INFINITE);

  cout mythread 1 running:“”thread 2”endl;

  睡眠(2000);

  ReleaseSemaphore(hSemaphore,1,NULL);//释放信号量

  }

  }

  //没有参数

  DWORD WINAPI myth read 1(LPVOID lpparameter)

  {

  while (1)

  {

  //信号量减1。如果等于0,你就去睡觉,大于0后再递减。

  WaitForSingleObject(hSemaphore,INFINITE);

  cout mythread 2 running thread 1 endl;

  睡眠(2000);

  //信号量加1

  ReleaseSemaphore(hSemaphore,1,NULL);//释放信号量

  }

  }

  //没有参数

  DWORD WINAPI myth read 3(LPVOID lpparameter)

  {

  while (1)

  {

  //信号量减1。如果等于0,你就去睡觉,大于0后再递减。

  WaitForSingleObject(hSemaphore,INFINITE);

  cout mythread 2 running thread 3 endl;

  睡眠(2000);

  //释放信号量,信号量加1。

  ReleaseSemaphore(hSemaphore,2,NULL);

  }

  }

  int main()

  {

  //创建一个信号量,初始值为2,最大值为3。

  hSemaphore=CreateSemaphore(NULL,2,3,NULL);

  //第三个参数是线程函数的地址,第四个参数是传递给线程的参数指针。

  HANDLE hThread=CreateThread(NULL,0,MyThread1,NULL,0,NULL);

  //释放句柄

  close handle(hThread);

  HANDLE hthread 1=CreateThread(NULL,0,MyThread2,NULL,0,NULL);

  close handle(hThread);

  HANDLE hthread 3=CreateThread(NULL,0,MyThread3,NULL,0,NULL);

  //释放句柄

  close handle(hthread 3);

  while(1);

  返回0;

  }结果,你可以看到三个线程交替运行两个

  原创作品来自勿忘你的倡议心,的博主,

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • pthread线程包常用函数,pthread多线程编程
  • c 多线程编程,c多线程编程实例
  • c 多线程编程,c多线程编程实例,VC多线程编程详解
  • cas 并发,java多线程cas
  • cas 并发,java多线程cas,java并发编程之cas详解
  • android中实现多线程操作的几种方式是什么,android 的多线程 实现方法
  • android中实现多线程操作的几种方式是什么,android 的多线程 实现方法,Android中实现多线程操作的几种方式
  • ,,详解Java多线程tryLock()方法使用
  • python多线程详解,python中的线程和进程
  • python多线程详解,python中的线程和进程,Python线程详解
  • ,,python多线程高级锁condition简单用法示例
  • ,,.NET Windows 多线程thread编程
  • python多线程是不是真正的并发,python的多进程是并发还是并行
  • python 多线程并行处理,python多线程运行
  • python 多线程编程,python多线程有几种实现方法,都是什么
  • 留言与评论(共有 条评论)
       
    验证码: