当前位置: 首页 > wzjs >正文

个人建网站的步骤mac蜜桃923色号

个人建网站的步骤,mac蜜桃923色号,做网站应该了解什么,开源企业网站源码主要思路是: 使用重叠 I/O(OVERLAPPED),避免阻塞 ConnectNamedPipe。额外创建一个“停止事件”(hStopEvent),在线程中与管道事件一起 WaitForMultipleObjects,一旦收到停止事件就马…

主要思路是:

  1. 使用重叠 I/O(OVERLAPPED),避免阻塞 ConnectNamedPipe。
  2. 额外创建一个“停止事件”(hStopEvent),在线程中与管道事件一起 WaitForMultipleObjects,一旦收到停止事件就马上退出循环。
  3. 在主线程(或 OnNcDestroy)中 SetEvent(hStopEvent) 通知线程退出,然后再 CloseHandle 管道和事件。
// 假设这几个都是类成员或全局变量:
HANDLE hPipe = INVALID_HANDLE_VALUE;      // 管道句柄
HANDLE hStopEvent = NULL;                 // 停止事件
HANDLE hOvEvent   = NULL;                 // OVERLAPPED 事件
HANDLE hThread    = NULL;                 // 工作线程句柄bool OpenPipe(MsgHandleInterface* msgHandle)
{// 1. 创建停止事件(自动重置、初始未置位)hStopEvent = CreateEvent(nullptr, FALSE, FALSE, nullptr);if (!hStopEvent) return false;// 2. 创建 OVERLAPPED 专用事件hOvEvent = CreateEvent(nullptr, FALSE, FALSE, nullptr);if (!hOvEvent) {CloseHandle(hStopEvent);return false;}// 3. 创建命名管道,注意 FILE_FLAG_OVERLAPPEDLPCTSTR lpszPipename = TEXT(CMWAITMSGPIPENAME);hPipe = CreateNamedPipe(lpszPipename,PIPE_ACCESS_INBOUND | FILE_FLAG_OVERLAPPED,  // 重叠模式PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE | PIPE_WAIT,1,BUFSIZE,BUFSIZE,0,NULL);if (hPipe == INVALID_HANDLE_VALUE) {CloseHandle(hOvEvent);CloseHandle(hStopEvent);return false;}// 4. 启动后台线程DWORD dwThreadId = 0;hThread = CreateThread(NULL,0,waitConnectThread,(LPVOID)msgHandle,    // 如果需要传递 msgHandle,可用结构体打包0,&dwThreadId);if (!hThread) {CloseHandle(hPipe);CloseHandle(hOvEvent);CloseHandle(hStopEvent);return false;}msgHandleObj = msgHandle;return true;
}// 窗口销毁或退出时调用
void ClosePipe()
{if (hStopEvent) {// 通知线程退出SetEvent(hStopEvent);}if (hThread) {// 等待线程结束WaitForSingleObject(hThread, INFINITE);CloseHandle(hThread);hThread = NULL;}if (hPipe != INVALID_HANDLE_VALUE) {CloseHandle(hPipe);hPipe = INVALID_HANDLE_VALUE;}if (hOvEvent) {CloseHandle(hOvEvent);hOvEvent = NULL;}if (hStopEvent) {CloseHandle(hStopEvent);hStopEvent = NULL;}
}// 线程入口:使用 OVERLAPPED + 双事件等待
DWORD WINAPI waitConnectThread(LPVOID lpvParam)
{UNREFERENCED_PARAMETER(lpvParam);OVERLAPPED ov = {};ov.hEvent = hOvEvent;// 先发起一次异步 ConnectNamedPipeBOOL fConnected = ConnectNamedPipe(hPipe, &ov);if (!fConnected && GetLastError() != ERROR_IO_PENDING) {// 如果既没马上连接,也不是挂起状态,就退出return 1;}// 等待停止事件 or 重叠 I/O 完成事件HANDLE waitArr[2] = { hStopEvent, hOvEvent };for (;;){DWORD idx = WaitForMultipleObjects(2, waitArr, FALSE, INFINITE);if (idx == WAIT_OBJECT_0) {// 收到停止信号break;}// 否则是管道连接完成if (idx == WAIT_OBJECT_0 + 1) {DWORD bytesTransferred = 0;if (!GetOverlappedResult(hPipe, &ov, &bytesTransferred, FALSE)) {// I/O 错误,退出break;}// 接收数据TCHAR buffer[BUFSIZE] = {};DWORD cbRead = 0;if (ReadFile(hPipe, buffer, BUFSIZE * sizeof(TCHAR), &cbRead, NULL) && cbRead > 0) {// 处理消息msgHandleObj->handlePipeMsg(buffer);}// 断开并重新挂起下一个连接DisconnectNamedPipe(hPipe);ResetEvent(hOvEvent);fConnected = ConnectNamedPipe(hPipe, &ov);if (!fConnected && GetLastError() != ERROR_IO_PENDING) {// 无法再次挂起连接,就退出break;}}else {// 其他错误break;}}return 0;
}
http://www.dtcms.com/wzjs/345985.html

相关文章:

  • div css 网站后台电商平台有哪些?
  • 网页设计教程基础肥城市区seo关键词排名
  • 中国建设银行网站怎么登录不上宁波网站推广优化外包
  • 卖域名做非法网站网络营销的策划方案
  • 青岛市专业做网站的吗外链发布论坛
  • 网站版建设谷歌商店paypal官网
  • 英国做deal的网站湖南百度推广代理商
  • 成都网站建设公司好做吗网站seo排名优化
  • 高青外贸公司网站建设互联网营销师证书骗局
  • 微信网站开发完全教程百度指数官网入口登录
  • 模拟人生4做游戏下载网站最新国际新闻大事件
  • 地方门户网站有前景吗资源平台
  • 杭州网站做的好公司哪家好郑州网站推广效果
  • 响应式网站建设公司昆明seo关键字推广
  • 聚名网怎么赚钱宁波seo公司排名
  • 网站 河北 备案 慢什么是seo什么是sem
  • 龙岗建设招标局网站网络推广平台大全
  • 做网站cookie传值搜索引擎优化的重要性
  • 自助建设分销商城网站西安百度推广公司
  • 有哪些做网站好的公司好舆情信息网
  • 用地方别名做网站名中国国家培训网正规吗
  • 美国网上做调查赚钱10大网站推荐长沙有实力的关键词优化价格
  • 做礼品建什么网站近几年的网络营销案例
  • 楚雄市网站建设公司搜索引擎排名国内
  • 网站模版免费个人网站设计方案
  • 用网站模板做新网站青岛网站建设培训学校
  • 冬创网站建设培训中心龙岗网站推广
  • 用dreamweaver建设网站成品网络推广有前途吗
  • 山西网站的公司seo技术培训茂名
  • 嘉兴高端网站建设千万别手贱在百度上搜这些词