随笔分类 - 多线程编程
Java Thread.join()详解--父线程等待子线程结束后再结束
摘要:目录(?)[+] 目录(?)[+] 阅读目录 一、使用方式。 二、为什么要用join()方法 三、join方法的作用 join 四、用实例来理解 打印结果: 打印结果: 五、从源码看join()方法 阅读目录 一、使用方式。 二、为什么要用join()方法 三、join方法的作用 join 四、用实
阅读全文
shutdown 和closesocket
摘要:来,咱们彻底的来讨论一下这个shutdown 和closesocket从函数调用上来分析(msdn):一旦完成了套接字的连接,应当将套接字关闭,并且释放其套接字句柄所占用的所有资源。真正释放一个已经打开的套接字句柄的资源直接调用closesocket即可,但要明白closesocket的调用可能会...
阅读全文
GetQueuedCompletionStatus的返回值
摘要:完成端口GetQueuedCompletionStatus返回值的问题先看看GetQueuedCompletionStatus函数的完整声明:BOOL GetQueuedCompletionStatus(HANDLE CompletionPort, LPDWORD lpNumberOfBytes, ...
阅读全文
PostQueuedCompletionStatus
摘要:PostQueuedCompletionStatus函数,向每个工作者线程都发送—个特殊的完成数据包。该函数会指示每个线程都“立即结束并退出”.下面是PostQueuedCompletionStatus函数的定义: BOOL PostQueuedCompletionStatus( HANDLE ...
阅读全文
PostQueuedCompletionStatus详解
摘要:PostQueuedCompletionStatus函数,向每个工作者线程都发送—个特殊的完成数据包。该函数会指示每个线程都“立即结束并退出”.下面是PostQueuedCompletionStatus函数的定义: BOOL PostQueuedCompletionStatus( HANDLE ...
阅读全文
完成端口(IOCP)怎么判断某个连接是否断开
摘要:完成端口函数:[csharp] view plaincopyBOOLGetQueuedCompletionStatus(HANDLECompletionPort,LPDWORDlpNumberOfBytes,PULONG_PTRlpCompletionKey,LPOVERLAPPED*lpOverl...
阅读全文
WSARecv()
摘要:简述:从一个套接口接收数据。#include int WSAAPI WSARecv (SOCKET s,LPWSABUF lpBuffers,DWORD dwBufferCount,LPDWORD lpNumberOfBytesRecvd,LPINT lpFlags,LPWSAOVERLAPPED ...
阅读全文
手把手教你玩转SOCKET模型之重叠I/O篇(上)
摘要:“身为一个初学者,时常能体味到初学者入门的艰辛,所以总是想抽空作点什么来尽我所能的帮助那些需要帮助的人。我也希望大家能把自己的所学和他人一起分享,不要去鄙视别人索取时的贪婪,因为最应该被鄙视的是不肯付出时的吝啬。” ----- 题记 By PiggyXP(小猪)前 言 其实我首先应该道歉,因为7月...
阅读全文
手把手教你玩转SOCKET模型之重叠I/O篇(下)
摘要:四。 实现重叠模型的步骤作 了这么多的准备工作,费了这么多的笔墨,我们终于可以开始着手编码了。其实慢慢的你就会明白,要想透析重叠结构的内部原理也许是要费点功夫,但是只是学会 如何来使用它,却是真的不难,唯一需要理清思路的地方就是和大量的客户端交互的情况下,我们得到事件通知以后,如何得知是哪一个重叠...
阅读全文
线程句柄有什么用
摘要:非托管资 源:ApplicationContext,Brush,Component,ComponentDesigner,Container,Context,Cursor,FileStream,Font,Icon,Image,Matrix,Object,OdbcDataReader,OleDBData...
阅读全文
用完成例程(Completion Routine)实现的重叠I/O模型
摘要:/// 用完成例程(Completion Routine)实现的重叠I/O模型/// 异步IO模型/// 用完成例程来实现重叠I/O比用事件通知简单得多。在这个模型中,主线程只用不停的接受连接/// 即可;辅助线程判断有没有新的客户端连接被建立,如果有,就为那个客户端套接字激活一个/// 异步的WS...
阅读全文
AcceptEx与WSAEventSelect和Accept
摘要:(转自论坛的一个帖子http://bbs.csdn.net/topics/280032853)AcceptEx主要用于向完成端口投递一个或多个的连接请求。。当有连接时进来,这里分两种情况:1.Accept不接受数据,工作线程收到IO完成操作的通知。2.Aceept必须接收到客户端的部分数量,工作线程...
阅读全文
完成端口(CompletionPort)详解
摘要:手把手叫你玩转网络编程系列之三 完成端口(Completion Port)详解 ----- By PiggyXP(小猪)前 言 本系列里完成端口的代码在两年前就已经写好了,但是由于许久没有写东西了,不知该如何提笔,所以这篇文档总是在酝酿之中……酝酿了两年之后,终于决定开始动笔了,但愿还不算晚…....
阅读全文
win32的计数增减操作的原子操作--InterLockedIncrement和InterlockedDecrement
摘要:InterLockedIncrement and InterLockedDecrement实现数的原子性加减。什么是原子性的加减呢?举个例子:如果一个变量 Long value =0;首先说一下正常情况下的加减操作:value+=1;1:系统从Value的空间取出值,并动态生成一个空间来存储取出来的...
阅读全文
critical section的用法
摘要:critical section Critical Section: 不论是硬件临界资源,还是软件临界资源,多个进程必须互斥地对它进行访问。每个进程中访问临界资源的那段代码称为临界区(Critical Section)。 每个进程中访问临界资源的那段程序称为临界区(Critical Sect...
阅读全文
多线程的那点儿事(之生产者-消费者)
摘要:生产者-消费者是很有意思的一种算法。它的存在主要是两个目的,第一就是满足生产者对资源的不断创造;第二就是满足消费者对资源的不断索取。当然,因为空间是有限的,所以资源既不能无限存储,也不能无限索取。 生产者的算法,[cpp] view plaincopyWaitForSingleObject(hEmp...
阅读全文
多线程的那点儿事(之windows锁)
摘要:在windows系统中,系统本身为我们提供了很多锁。通过这些锁的使用,一方面可以加强我们对锁的认识,另外一方面可以提高代码的性能和健壮性。常用的锁以下四种:临界区,互斥量,信号量,event。 (1)临界区 临界区是最简单的一种锁。基本的临界区操作有,[cpp] view plaincopyIni...
阅读全文
多线程的那点儿事(之自旋锁)
摘要:自旋锁是SMP中经常使用到的一个锁。所谓的smp,就是对称多处理器的意思。在工业用的pcb板上面,特别是服务器上面,一个pcb板有多个cpu是 很正常的事情。这些cpu相互之间是独立运行的,每一个cpu均有自己的调度队列。然而,这些cpu在内存空间上是共享的。举个例子说,假设有一个数据 value...
阅读全文
多线程的那点事儿(之数据互斥)
摘要:在多线程存在的环境中,除了堆栈中的临时数据之外,所有的数据都是共享的。如果我们需要线程之间正确地运行,那么务必需要保证公共数据的执行和计算是正确 的。简单一点说,就是保证数据在执行的时候必须是互斥的。否则,如果两个或者多个线程在同一时刻对数据进行了操作,那么后果是不可想象的。 也许有的朋友会说,不...
阅读全文
多线程的那点儿事(之数据同步)
摘要:多线程创建其实十分简单,在windows系统下面有很多函数可以创建多线程,比如说_beginthread。我们就可以利用它为我们编写一段简单的多线程代码,[cpp] view plaincopy#include#include#includeunsignedintvalue=0;voidprint(...
阅读全文