2 lwjstc lwjstc 于 2016.02.16 13:27 提问

多线程同步方案同步选择
在WIN32的C++多线程开发中的生产消费使用的同步方案中,一般会采用 条件变量,来做为等待判断的条件。
  我在网狐的工作线程中看见了一种新的使用方法: 
            工作线程使用 GetQueuedCompletionStatus 等待事件触发。
            生产线程使用 PostQueuedCompletionStatus 产生消息,另 GetQueuedCompletionStatus 触发执行。
    我在网络中找资料,并没有关于多线程 同步使用 IOCP 完型端口的案例。
    都是使用信号量,互斥,临界,事件,性能上临界的性能相对较优,我看了网狐的实现方式,这种采用 IOCP的方法反而是最简单的。
    问题来了: 使用IOCP 作为生产消费的实现方案,有什么优势或者相关的资料呢?国内网络找到的都是清一色的网络编程的异步I/O。

3个回答

oyljerry
oyljerry   Ds   Rxr 2016.02.16 15:00

这看上去是API帮你做了同步处理。

lwjstc
lwjstc IOCP的使用,能找到的文章都是在描述服务器的套接字工作。这种使用方法确实很先进,因为 GetQueuedCompletionStatus 的返回值中还涵盖了结束退出的值。
2 年多之前 回复
zuishikonghuan
zuishikonghuan   2016.02.16 21:21
Mr_dsw
Mr_dsw   Ds   Rxr 2016.02.16 22:17

java中通过同步代码快或同步对象进行限制

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Java线程同步的解决方案——synchronized与Lock
要说明线程同步问题首先要说明Java线程的两个特性,可见性和有序性。多个线程之间是不能直接传递数据交互的,它们之间的交互只能通过共享变量来实现。例如,假设在多个线程之间共享了Count类的一个对象,Count类有一个私有域num和一个公有方法count(),count()方法对num进行加1操作。这个对象是被创建在主内存(堆内存)中,每个线程都有自己的工作内存(线程栈),工作内存存储了主内存Cou
多线程_同步的特点及好处和弊端
package cn.itcast_10; /* * 举例: * 火车上厕所。 * 一节车箱里面的所有人(多线程),1号座位去上厕所(共享资源)门(synchronized)关上了,其它人进不去了。 * * 同步的特点: * 前提: * 多线程。 * 解决问题的时候要注意: * 多个线程使用的是同一个锁对象。 * 同步的好处: * 同
三种方式实现多线程同步问题
1使用互斥量和事件对象实现线程同步的代码 #include #include DWORD WINAPI Fun1Proc( LPVOID lpParameter // thread data ); DWORD WINAPI Fun2Proc( LPVOID lpParameter // thread data ); int tickets = 100; //HANDLE
IOS多线程同步问题
IOS开发多线程开发,同步块,NSLock,NSCondition
多线程-线程同步有几种实现方式
线程同步有几种实现方式 1. Synchronized 在方法级别  public synchronized …. 在代码块   synchronized(对象){} 1. 当synchronized作用在方法上的时候,锁住的就是这个对象的实例 synchronized(this) 2. 当synchronized作用在静态方法上的时候,锁住的是这个对象的Class实例,因为class数
多线程同步.(同步对象的用法)doc
多线程同步.doc多线程同步,各种同步对象的用法
C++11 多线程同步
多线程能提高程序的效率,但同时也带来了相应的问题----数据竞争。当多个线程同时操作同一个变量时,就会出现数据竞争。出现数据竞争,一般会用临界区(Critical Section)、互斥量(Mutex)、信号量(Semaphore)、事件(Event)这四种方法来完成线程同步。 1、临界区 对于临界资源,多线程必须互斥地对它进行访问。每个线程访问临界资源的那段代码就称为临界
多线程如何实现同步
在多个线程并发执行访问同一个数据时,如果不采取相应的措施,将会是非常危险的。所谓同步(synchronization)就是指一个线程访问数据时,其它线程不得对同一个数据进行访问,即同一时刻只能有一个线程访问该数据,当这一线程访问结束时其它线程才能对这它进行访问。同步最常见的方式就是使用锁(Lock),也称为线程锁。锁是一种非强制机制,每一个线程在访问数据或资源之前,首先试图获取(Acquire)锁,
多线程优点及同步方式
一、多线程优点 1.通常启动一个进程,要为该进程分配独立的地址空间,建立多个数据表来维护进程的代码段、堆栈段和数据段,比较耗费系统资源。一个进程创建多线程可以使用相同的地址空间,共享大部分数据,启动一个线程所花费的空间远远小于进程所需空间,而且启动线程花费的时间也比进程花费时间少很多。 2.线程间通讯方便,以为线程之间具有共同的地址空间,共享大部分数据资源 3.提高应用响应速度,将耗时工作放
Windows下C++多线程同步与互斥简单运用
继以往的想法,写这点文字,粘贴点代码,是为了增加自己的记忆,也希望能帮助到需要帮助的人。1.  互斥量,Mutex#include #include using namespace std; DWORD WINAPI Thread1(LPVOID lpParmeter); DWORD WINAPI Thread2(LPVOID lpParmeter); static HANDLE g_hMutex = INVALID_HANDLE_VALUE; static int g_iCnt =