VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 104|回复: 6

VS 2015 debug调试下 关闭线程hanlde弹中断 Release没问题

[复制链接]
85_avatar_middle
最佳答案
2 
在线会员 发表于 2020-2-23 23:14:43 | 显示全部楼层 |阅读模式
3驿站币
HANDLE thread[2] = { 0 };

void start_server() {
                thread[0] = CreateThread(NULL, 0, work_WSA_s1, 0, 0, 0);
                thread[1] = CreateThread(NULL, 0, work_WSA_s1, 0, 0, 0);
}

void close_server() {
        PostQueuedCompletionStatus(s_iocp, 0, -1, 0);
        PostQueuedCompletionStatus(s_iocp, 0, -1, 0);
        PostQueuedCompletionStatus(f_iocp, 0, -1, 0);
        DWORD a=0;
         a = WaitForMultipleObjects(2, thread, TRUE, INFINITE);  
       
        for (int i = 0; i < sizeof(thread) / 4; i++)
        {
                CloseHandle(thread[i]);//------------------------这个位置debug调试下  中断   debug和Release的exe和Release的调试没出现0xC0000008:                 An invalid handle was specified。(句柄无效 ) 。选择忽略和继续程序也不崩  查了网上有些用了findclose  但是我没用其他的系统对象就线程句柄
                thread[i] = 0;
        }

WaitForMultipleObjects 返回值a=4294967295 (-1)  结果是没有等待线程结束就往下执行for (int i = 0; i < sizeof(thread) / 4; i++)
改用 WaitForSingleObject 就没问题 。  删除掉CloseHandle(thread[i]) 也不中断 但是   系统对象没发关掉
找了好些网上资料没找到原因   求助各位大佬?





上一篇:C++第五课问题。
下一篇:大佬们 C++零基础入门教程的课后的小作业的答案在哪 有大佬知道吗
01_avatar_middle
最佳答案
32 
online_admins 发表于 2020-2-23 23:26:35 | 显示全部楼层
具体得看看你的函数调用顺序了,现在还确定不了问题
85_avatar_middle
最佳答案
2 
ico_lz  楼主| 发表于 2020-2-23 23:49:22 | 显示全部楼层
admin 发表于 2020-2-23 23:26
具体得看看你的函数调用顺序了,现在还确定不了问题

用的C写的窗口程序
按钮1 启动接收线程/关闭接受线程
start_server()/close_server()

按钮2 连续发送消息/停止发送
start_sendpack()/close_sendpack()

顺序是  按钮1——按钮2——按钮2——按钮1
start_server()——start_sendpack()——close_sendpack()——close_server()
85_avatar_middle
最佳答案
2 
ico_lz  楼主| 发表于 2020-2-24 00:22:57 | 显示全部楼层
admin 发表于 2020-2-23 23:26
具体得看看你的函数调用顺序了,现在还确定不了问题

找倒问题了 HANDLE thread[2] = { 0 };  不能初始化  但是不知道原因 求解
85_avatar_middle
最佳答案
2 
ico_lz  楼主| 发表于 2020-2-24 00:47:19 | 显示全部楼层
内存查看在创建线程的时候有    handle  thread[2] 能得到数据。但是不知道这个2个数据是不是有效内核对象
01_avatar_middle
最佳答案
32 
online_admins 发表于 2020-2-24 00:59:22 | 显示全部楼层
tjzoo111 发表于 2020-2-24 00:22
找倒问题了 HANDLE thread[2] = { 0 };  不能初始化  但是不知道原因 求解

感觉跟这个没什么关系呢。。。VS 2015 debug调试下  关闭线程hanlde弹中断 Release没问题
85_avatar_middle
最佳答案
2 
ico_lz  楼主| 发表于 2020-2-24 11:03:05 | 显示全部楼层
admin 发表于 2020-2-24 00:59
感觉跟这个没什么关系呢。。。

我也是 感觉真的不可思议 最先也想到流程什么的  真的没想到是这问题
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号 )|网站地图wx_jqr

GMT+8, 2020-3-30 17:18

Powered by Discuz! X3.4

© 2009-2019 cctry.com

快速回复 返回顶部 返回列表