随笔分类 -  多线程编程

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