随笔分类 - 多线程/多进程
资源共享/线程池/
摘要:第一种方法,大家会借助第三个变量来实现:如:tmp=A;A=B;B=tmp;这种方法需要借助第三变量来实现;第二种方法是利用加减法实现两个变量的交换,如:A=A+B;B=A-B;A=A-B;但是 如果 A+B 超出 A的返回 ,就会出错!极为不推荐 此方法第三种方法是得用位异或运算来实现,也是效率最高的一种,在大量数据交换的时候,效率明显优于前两种方法,如:A=A^B;B=A^B;A=A^B;原理:利用一个数异或本身等于0和异或运算符合交换率。异或的意思就是:不同 才可以得1,否则为0 // 异或 // 0^0=0 // 1^1=0 // 1^0=1 // 0^1=1假...
阅读全文
摘要:最近的多线程 想实现这样的功能: 多线程Socket获得的数据 对其进行某种处理FuncA,但是FuncA比较耗时,希望能够单独独立出来,这样 接受和处理数据分开,但是FuncA处理数据不能放入一个线程,否则很慢,要多线程处理,这个时候 就要使用 多线程 信号量 semaphore了。【我是在win
阅读全文
摘要:windows下有没有 类似 fork 的函数呢?fork可以从当前 复制所有进程信息都另一个进程,然后两个进程可以执行不同的代码。windows显然没有fork。只有CreateProcess,但是CreateProcess有很多参数:BOOL WINAPI CreateProcess( _In_opt_ LPCTSTR lpApplicationName, _Inout_opt_ LPTSTR lpCommandLine, _In_opt_ LPSECURITY_ATTRIBUTES lpProcessAttributes, _In_opt_ LPSECU...
阅读全文
摘要:windows下的IOCP和 linux下的epoll(#epoll我还没有研究过#) 都是属于socket 网络编程的范畴.不过其特色是:用固定很少的线程去管理成千上万个socket连接.其相当于 异步通信 .普通socket是同步,同步 可能要一个线程一个socket链接 去做,由于系统可以运行的线程数目有限,其就成为一个瓶颈了. IOCP/epoll 可以解决这个问题.首先,你要懂得普通socket TCP的用法:Serve端WSAStartup,socket,bind listen,accept. accept之后就是阻塞的recv和send了.WSACleanup .其中accept
阅读全文
摘要:我以为pthread_win32 完全兼容posix 的pthread呢,结果发现,至少有一个地方不同,pthread_t的类型。posix下pthread_t的类型是:typedef unsigned long int pthread_t;//come from /usr/include/bits/pthread.h//用途:pthread_t用于声明线程ID。//sizeof (pthread_t) =4;而pthread_win32 是:/* * Generic handle type - intended to extend uniqueness beyond * that avail
阅读全文
摘要:只有还没做出来的,没有想不到的。从linux移植到windows的C++程序,肯定要改造下 socket和线程库。某日,突然想到 windows 可以使用pthread库么?搜索,果然有线程的解决方案。1.下载:http://sourceware.org/pthreads-win32/#download直接下载最新的就行,目前是:prebuilt-dll-2-9-1-release.zip 因为是windows平台的,所以下载 .zip 或。exe就行,.exe 就是自解压而已,别无其他。最新版本 没有.exe的下载版本了,其内容和zip的一样。但是 zip和 tar.gz tar.bz2的
阅读全文