ZeroMQ线程通讯
来源:互联网 发布:pla算法 编辑:程序博客网 时间:2024/05/21 17:42
源代码示例: git clone git://github.com/imatix/zguide.git; http://www.kongch.com/2012/01/zeromq-pattern-pipeline/
zhelpers.h: 一个供C语言使用的ZMQ功能函数库。https://github.com/imatix/zguide/blob/master/examples/C/zhelpers.h
pthread.h: POSIX线程(POSIX threads),简称Pthreads,是线程的POSIX标准。该标准定义了创建和操纵线程的一整套API。在类Unix操作系统(Unix、Linux、Mac OS X等)中,都使用Pthreads作为操作系统的线程。Windows操作系统也有其移植版pthreads-win32。ftp://sourceware.org/pub/pthreads-win322
zhelpers.h: 一个供C语言使用的ZMQ功能函数库。https://github.com/imatix/zguide/blob/master/examples/C/zhelpers.h
pthread.h: POSIX线程(POSIX threads),简称Pthreads,是线程的POSIX标准。该标准定义了创建和操纵线程的一整套API。在类Unix操作系统(Unix、Linux、Mac OS X等)中,都使用Pthreads作为操作系统的线程。Windows操作系统也有其移植版pthreads-win32。ftp://sourceware.org/pub/pthreads-win322
/******************************************************************** author : Clark/陈泽丹 created : 2014-6-21 purpose : 线程辅助类*********************************************************************/#pragma once#include "ThreadHelper.h"class ZmqThreadProxy{public:ZmqThreadProxy();boolStart( long _sign, IThreadUnit *_p_fun );boolIsRun();virtual voidStop();//有些线程的逻辑处理是支持中断,需重写stopprivate:boolm_is_run;longm_sign;};
#include "ZmqThread.h"#include <iostream>#include "ZmqHelpler.h"#include <Windows.h>#define START_CMD"inproc://zmqthread_start_%d"#define STOP_CMD"inproc://zmqthread_stop_%d"class AdapterThread: public IThreadUnit{public:AdapterThread( long _sign, IThreadUnit *_p_fun):m_sign(_sign),mp_fun(_p_fun){}virtual ~AdapterThread(){if( 0 != mp_fun ){delete mp_fun;mp_fun = 0;}}virtual void Server(){//--必须先行建立节点,不然不会保存发送接收的信息缓存char addr[256];char msg[64];_snprintf_s( addr, sizeof(addr)-1, START_CMD, m_sign );ReqSkt stop_thread( addr );_snprintf_s( addr, sizeof(addr)-1, STOP_CMD, m_sign );RepSkt start_thread( addr );//开始stop_thread.BeginSend("START", sizeof("START"));stop_thread.End();//执行mp_fun->Server();//结束start_thread.BeginRecv(msg, sizeof(msg));start_thread.End();}private:IThreadUnit *mp_fun;long m_sign;};ZmqThreadProxy::ZmqThreadProxy():m_is_run(false),m_sign(0){}bool ZmqThreadProxy::IsRun(){return m_is_run;}bool ZmqThreadProxy::Start( long _sign, IThreadUnit *_p_fun ){if( !m_is_run ){m_sign = _sign;char addr[256];_snprintf_s( addr, sizeof(addr)-1, START_CMD, _sign );RepSkt start_thread( addr );IThreadUnit *p_server = new AdapterThread( _sign, _p_fun );g_threadpool.CreateThread( p_server );char msg[64];start_thread.BeginRecv(msg, sizeof(msg));m_is_run = true;start_thread.End();return true;}return false;}void ZmqThreadProxy::Stop(){if( m_is_run ){char addr[256];_snprintf_s( addr, sizeof(addr)-1, STOP_CMD, m_sign );ReqSkt stop_thread( addr );stop_thread.BeginSend( "STOP", sizeof("STOP") );m_is_run = false;stop_thread.End();}}
0 0
- ZeroMQ线程通讯
- 新世纪通讯函式库 – ZeroMQ
- zeromq的多进程通讯的例子
- 线程通讯
- 线程通讯
- zeromq
- zeromq
- zeroMQ
- Zeromq
- zeroMQ
- zeroMQ
- zeromq
- zeromq
- zeromq
- ZeroMQ
- zeromq
- ZeroMQ
- ZeroMQ
- 正则表达式 EditPlus
- 字符串-01. 在字符串中查找指定字符(15)
- 利用Socket函数创建一个网络套接字
- 解决ssh的"Write failed: Broken pipe"问题
- Android 开源框架Universal-Image-Loader完全解析(二)--- 图片缓存策略详解
- ZeroMQ线程通讯
- 【Gateway安装】Windows 下 已存在DB10gR2 安装Gateway11gR2 for sybase
- qt中文乱码
- Java IO流
- andriod 实现新浪、QQ空间、微信朋友圈、微信好友分享功能
- 恢复Win7里管理员的权限到默认状态
- USB设备firmware
- 懂得生命
- Hrbust 1073