本文介绍了关键部分会在这里工作还是我必须使用信号量或互斥量?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这是该程序的开始
#include " Derived.h" int main() { for ( int i = 0 ; i< ; = 2 ; i ++) { 派生* pDerived = 新 Derived(); pDerived-> fun(); 睡眠( 30000 ); } 返回 0 ; }
这是我的意思是基类的接口
#include >< stdlib.h > #include < stdio.h > #include < string.h > #include < process.h > #include < atlstr.h > #include < Windows.h > #include < winsock2.h > #include < ws2tcpip.h > 使用 命名空间 std; class 接口 { 公共: 结构 addrinfo addr_; 未签名 短 port_; CString hostname_; HANDLE threadHandle_; HANDLE threadHandle1_; 布尔 connected_; SOCKET袜子_; SOCKET ThreadSocket; 虚拟 无效 fun()= 0 ; 虚拟 DWORD WINAPI MachineConnectThread(接口* my)= 0 ; 虚拟 int SendRequest(SOCKET sock)= 0 ; // 这会将请求发送到计算机. 虚拟 字符 * ReceiveResponse(SOCKET袜子)= 0 跨度>; // 这将接收来自计算机的二进制数据响应. HANDLE threadHandle_; };
这是我的派生类
#include " CBase.h" class 派生: public 接口 { 公共: 衍生的(); 无效 fun(); int SendRequest(SOCKET袜子); 字符 * ReceiveResponse(SOCKET sock); DWORD WINAPI MachineConnectThread(接口* my); 静态 UINT ThreadFunc(LPVOID param); CRITICAL_SECTION VarCS; };
#include " Derived.h" 派生的:: Derived() { sock_ = INVALID_SOCKET; ThreadSocket = INVALID_SOCKET; InitializeCriticalSection(&VarCS); } 无效派生:: fun() { printf(" 有趣的功能\ n" ); // 此处将创建套接字,并将其传递给sebd请求并接收响应功能 尝试 { DWORD dwThreadId; threadHandle_ = CreateThread(NULL, 0 ,(LPTHREAD_START_ROUTINE)ThreadFunc, this , 0 ,& dwThreadId); } 捕获(...) { 如果(threadHandle_ == NULL) { printf(" 创建线程时出错.\ n" ); 返回 0 ; } } } int 派生:: SendRequest(SOCKET袜子) { printf(" 在此函数中,请求将发送到服务器\ n" ); } 字符 *派生:: ReceiveResponse(SOCKET袜子) { printf(" 此处将从服务器接收响应\ n" ); } UINT派生:: ThreadFunc(LPVOID参数) { 接口* obj =(接口*)参数; obj-> MachineConnectThread(obj); // 调用成员函数 // 在新线程中完成工作 返回 0 ; } DWORD WINAPI派生:: MachineConnectThread(接口* my) { ThreadSocket =(SOCKET)my-> sock_; 同时( 1 ) { EnterCriticalSection(& VarCS); // 将在此处运行此关键部分 字符 * buf = NULL; 字符 * preBuf = NULL; int i = 0 ; SendRequest(ThreadSocket); buf = ReceiveResponse(ThreadSocket); 睡眠( 20000 ); LeaveCriticalSection(&VarCS); } }
解决方案
这篇关于关键部分会在这里工作还是我必须使用信号量或互斥量?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!