
【进程&线程通信技术】
铭毅天下
和你一起,死磕Elastic!
-
原创 临界区线程对象的使用
临界区线程对象的使用#include #include using namespace std;CRITICAL_SECTION g_cs;bool g_bContinue = true;int g_count1 = 0;int g_count2 = 0;DWORD WINAPI ThreadProc(LPVOID lpParameter);int main(){ H2012-07-06 07:20:093537
0
-
原创 windows C++ 互相等待线程同步示例
**windows C++ 互相等待线程同步示例**开发中遇到线程同步问题,可抽象为如下模型:1、主线程的继续执行的前提是子线程的变量已经初始化完毕。2、子线程待主线程执行完毕后继续执行后续的初始化操作。重复1,2执行......直到通信结束。如下图所示:源码(VS2010编译、运行通过)#include "stdafx.h"#include <iostream>using namesp2015-05-11 17:22:134057
0
-
原创 windows C++ 多任务并发执行设计
1、问题描述 如图: (1)服务端负责下发任务;且每次下发一个任务,下发任务个数不固定(通过下发界面勾选下发),但总个数<=4个。 (2)客户端负责接收任务,接收任务后要循环执行,除非接收到停止指令后停止执行。 指令类型分为: 1)心跳指令——用于保活连接; 2)任务开始指令——用于开始执行任务; 3)任务中止指令——用于结束任务;2、设计详解 (1)客户端要并发运行,且会调用相同接2015-08-30 11:56:063518
0
-
转载 _beginThreadex创建多线程解读
_beginThreadex创建多线程解读一、需要的头文件支持 #include // for _beginthread()需要的设置:ProjectàSetting-->C/C++-->User run-time library 选择Debug Multithreaded 或者Multithreaded。即使用: MT或MTD。源码如下:#include2012-07-06 07:17:3755956
14
-
原创 VS2008多线程WinSock通信中常见问题及解决方案
VS2008多线程WinSock通信中常见问题及解决方案问题一、VS2008中,CString转化为char*时,GetBuffer(m_str.GetLength())等屡试不爽?解决方案:无奈网友这个函数还好使[大家不用再发帖问了,这是相对较好的解决方案],主要是Unicode和GB2312编码方式的不同,一般出现在winsock的send或recv函数buf处。可以使用如下函数实2012-07-11 07:23:592667
0
-
转载 创建线程后为什么关闭了线程句柄,线程还是可以运行?
主线程只要拥有线程句柄,事后就可以对线程执行某些操作,比如查询线程状态等等,靠的就是句柄,如果没有句柄,系统就无从知道要查的是那个线程的状态。但保持这个句柄不关闭,并不是线程运行的条件。 关闭线程句柄只是释放句柄资源,新开启线程后,如果不再利用其句柄,应该关闭句柄,释放系统资源。关闭线程句柄和线程的结束与否没有关系。 句柄可以认为是系统对资源(如线程)的分配的一个2012-06-25 23:17:544949
0
-
转载 消息队列
消息队列 一个任务运行时的数据和状态怎么告诉其他任务?信号量为任务间同步和互斥提供了提供了高效的方法,但它不能携带更多的任务信息。因而需要使用更高级的通讯方式,即消息队列和管道。这节主要讲消息队列。消息队列的应用场景:一对一:图一 两个任务利用消息通讯这是一种简单的应用模式。任务1 发送消息到消息队列1 中,任务2 从消息队列中1 接收消息,如果任务2 需要回应2012-07-06 07:08:313676
0
-
原创 unresolved external symbol __imp__WSAStartup@8 解决方法
.error LNK2001: unresolved external symbol__imp__WSAStartup@8VC6.0下的错误信息:error LNK2001:unresolved external symbol __imp__socket@12error LNK2001:unresolved external symbol __imp__WSAStartup@82012-07-06 06:58:507916
2
-
原创 Sleep和WaitForSingleObject区别
一、Msdn种Sleep解读This function suspends the execution of thecurrent thread for a specified interval.终止线程指定的时间间隔。void Sleep(DWORD dwMilliseconds);ParametersdwMilliseconds Specifies the tim2012-07-06 07:24:579212
0
-
原创 项目小结及难点复盘
项目小结及难点复盘1、程序总体框架结构 计算程序属于客户端,与服务端建立socket连接并实时获取需要计算的数据。 计算程序结果写入oracle数据库对应的表中,供前台界面读取并显示结果。2、计算模块所处的位置及功能 完成数据socket通信、数据接收、数据解析、计算、结果写数据库操作。3、使用技术 socket通信、线程同步、OTL、Oracle数据库查询、STL。3、遇到的技术难点 12015-06-02 05:08:564161
2