|
发表于 2016-11-7 03:13:34
|
显示全部楼层
浙江省杭州市
CreateThread也就是易语言多线程支持库(EThread.fne)的启动线程用到的API(起码支持库给出的英文名是如此),会返回一个handle,也就是常说的线程句柄,用来控制这个线程,关闭这个句柄是为了防止泄漏,也就是你不再能通过句柄来控制它,然而它本身依然会执行完成并释放。但是易语言给出的CreateThreadHandle就不知道是什么了。至于你问的是否会自己释放句柄,我写了个代码来测试,证明起码不是立刻释放,所以还是最好主动关闭一下.
调试输出 (启动线程 (&子程序1, 1, handle )) 调试输出 (handle, 关闭线程句柄 (handle )) 调试输出 (启动线程 (&子程序1, 1, handle )) 延时 (100 )调试输出 (handle, 关闭线程句柄 (handle )) 调试输出 (启动线程 (&子程序1, 1, handle )) 延时 (5000 )调试输出 (handle, 关闭线程句柄 (handle )) 调试输出 (启动线程 (&子程序1, 1, handle )) 调试输出 (handle, CloseHandle (handle )) 调试输出 (启动线程 (&子程序1, 1, handle )) 延时 (100 )调试输出 (handle, CloseHandle (handle )) 调试输出 (启动线程 (&子程序1, 1, handle )) 延时 (5000 )调试输出 (handle, CloseHandle (handle )) 返回 (0 )延时 (10 )返回 ()
实际上大牛在那本windows核心编程里说过 应当避免使用createthread 。 而用createthread创建线程再用closehandle关闭句柄的话 在某些情况下会引起内存泄漏
微软也提供了更加安全的VC++函数 反正我现在已经抛弃了createthread 虽然不见得我的程序就稳定了,但也没变得不稳定,听大牛的话是没错的 感兴趣的话可以自己研究下
以上是我的一点点看法,希望有帮助 |
|