事件同步(一)-——CreateEvent( )事件对象实现线程同步
事件对象分为两类:人工重置事件对象和自动重置事件对象。
对于人工重置事件对象,可以同时有多个线程等待到事件对象,成为可调度线程。
对于自动重置事件对象,等待该事件对象的多个线程只能有一个线程成为可调度线程。此外,如果事件对象为自动重置事件对象,当某个线程等待到事件对象后,系统将自动将事件对象设置为未通知对象...
#include "windows.h"
#include <iostream>
int number = ; HANDLE hEvent; unsigned long _stdcall ThreadProc1(void *lpParameter) //线程1
{
while (number < )
{
WaitForSingleObject(hEvent, INFINITE);
std::cout << "线程1当前计数:" <<number<<std::endl;
number++;
Sleep();
SetEvent(hEvent);//设置事件为有信号状态;
}
return ;
}
unsigned long _stdcall ThreadProc2(void *lpParameter) //线程2
{
while (number < )
{
WaitForSingleObject(hEvent, INFINITE);
std::cout << "线程2当前计数:" << number << std::endl;
number++;
Sleep();
SetEvent(hEvent);
}
return ;
}
int main(int argc, char *argv[])
{
HANDLE hThread1 = CreateThread(NULL, , ThreadProc1, NULL, , NULL);
HANDLE hThread2 = CreateThread(NULL, , ThreadProc2, NULL, , NULL);
hEvent = CreateEvent(NULL, FALSE, TRUE, "event");
CloseHandle(hThread1);
CloseHandle(hThread2);
while (true)
{
;
}
return ;
}
事件同步(一)-——CreateEvent( )事件对象实现线程同步的更多相关文章
- [C++] socket - 5 [API事件对象实现线程同步]
/*API事件对象实现线程同步*/ #include<windows.h> #include<stdio.h> DWORD WINAPI myfun1(LPVOID lpPar ...
- windows核心编程---第八章 使用内核对象进行线程同步
使用内核对象进行线程同步. 前面我们介绍了用户模式下线程同步的几种方式.在用户模式下进行线程同步的最大好处就是速度非常快.因此当需要使用线程同步时用户模式下的线程同步是首选. 但是用户模式下的线程同步 ...
- Windows核心编程:第9章 用内核对象进行线程同步
Github https://github.com/gongluck/Windows-Core-Program.git //第9章 用内核对象进行线程同步.cpp: 定义应用程序的入口点. // #i ...
- C++之内核对象进行线程同步
用户模式下的线程同步机制提供了非常好的性能,但他们也的确存在一些局限性,而且不适用于许多应用程序,例如,对Interlocked系列函数只能对一个值进行操作,它们从来不会把线程切换到等待状态.我们可以 ...
- 《Windows核心编程系列》八谈谈用内核对象进行线程同步
使用内核对象进行线程同步. 前面我们介绍了用户模式下线程同步的几种方式.在用户模式下进行线程同步的最大好处就是速度非常快.因此当需要使用线程同步时用户模式下的线程同步是首选. 但是用户模式下的线程同步 ...
- [C++] socket - 6 [API互斥事件对象实现线程同步]
/*API互斥事件对象实现线程同步*/ #include<windows.h> #include<stdio.h> DWORD WINAPI myfun1(LPVOID lpP ...
- 第9章 用内核对象进行线程同步(1)_事件对象(Event)
9.1 等待函数 (1)WaitForSingleObject(hObject,dwMilliseonds); ①dwMilliseconds为INFINITE时表示无限等待 ②dwMilliseco ...
- 第9章 用内核对象进行线程同步(4)_死锁(DeadLock)及其他
9.7 线程同步对象速查表 对象 何时处于未触发状态 何时处于触发状态 成功等待的副作用 进程 进程仍在运行的时候 进程终止的时(ExitProcess.TerminateProcess) 没有 线程 ...
- 第9章 用内核对象进行线程同步(2)_可等待计时器(WaitableTimer)
9.4 可等待的计时器内核对象——某个指定的时间或每隔一段时间触发一次 (1)创建可等待计时器:CreateWaitableTimer(使用时应把常量_WIN32_WINNT定义为0x0400) 参数 ...
- 操作系统中的进程同步与Window中利用内核对象进行线程同步的关系
操作系统中为了解决进程间同步问题提出了用信号量机制,信号量可分为四种类型分别是互斥型信号量,记录型信号量,AND型信号量,信号量集. 互斥型信号量 互斥型信号量是资源数量为1的特殊的记录型信号量.表示 ...
随机推荐
- 本地推送UILocalNotification的一些简单方法
1.添加本地推送,需要在app添加推送.可以根据通知的userInfo的不同的键值对来区分不同的通知 UILocalNotification *notification = [[UILocalNoti ...
- mysql中left join设置条件在on与where时的区别
一.首先我们准备两张表来进行测试. CREATE TABLE `a` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID', `na ...
- eclipse Tomcat和 MYSQL JAVA web新手开发示例--登录界面连接数据库
登录界面login.jsp 1 <%@ page language="java" import="java.util.*" contentType=&qu ...
- springboot 项目添加jaeger调用链监控
1.添加maven依赖<dependency> <groupId>io.opentracing.contrib</groupId> <artifactId&g ...
- 8N - 水果
夏天来了~~好开心啊,呵呵,好多好多水果~~ Joe经营着一个不大的水果店.他认为生存之道就是经营最受顾客欢迎的水果.现在他想要一份水果销售情况的明细表,这样Joe就可以很容易掌握所有水果的销售情况了 ...
- ui设计教程分享:关于Logo设计要素
1. 视觉上”一语双关 我最喜欢的一些Logo在视觉设计上”一语双关”,将两张图片.两张意象巧妙结合,合二为一. WinePlace 的Logo就是一个绝佳的案例 这个Logo看起来像图钉,暗喻着 ...
- Linux设置桌面图标 (双击运行jar包)
Ubuntu平台 预备条件: 1)平台是Gridion上的Ubuntu 2)安装了JRE (版本如下) 3)在IDE(我用的是IDEA)打包成可运行的jar文件 设置步骤: 1)新建.desktop文 ...
- 【SoapUI】比较Json response
package direct; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject ...
- Spring访问数据库(方式上跟HQL类似,每行记录映射一个实体类)
看了这篇技术博客,觉得收获较大,收藏了:http://sarin.iteye.com/blog/875915
- Can I win LT464
In the "100 game," two players take turns adding, to a running total, any integer from 1.. ...