|
5精币
|
线程_启动多参_整数型 | 整数型 | | |
子程序指针 | 子程序指针 | | | | 参数1 | 整数型 | | | | 参数2 | 整数型 | | | | 参数3 | 整数型 | | | | 参数4 | 整数型 | | | | 参数5 | 整数型 | | | | 线程ID | 整数型 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | pDataArray | 整数型 | | | hThread | 整数型 | | |
pDataArray = LocalAlloc ( #LMEM_ZEROINIT, 24 ) 如果真 (pDataArray ≠ #NULL )__set (pDataArray, 0, 到整数 (子程序指针 )) __set (pDataArray, 4, 参数1 )__set (pDataArray, 8, 参数2 )__set (pDataArray, 12, 参数3 )__set (pDataArray, 16, 参数4 )__set (pDataArray, 20, 参数5 )hThread = CreateThread ( #NULL, 0, 到整数 (&ThreadParamFunc ), pDataArray, 0, 取指针整数_ (线程ID )) 返回 (hThread)
pDataArray = LocalAlloc (#LMEM_ZEROINIT, 24)
hThread = CreateThread (#NULL, 0, 到整数 (&ThreadParamFunc), pDataArray, 0, 取指针整数_ (线程ID))
精易模块中是申请了一块堆内存,然后将参数储存在其中,使用CreateThread ()传递堆内存地址用作参数进去,然后子程序参数的数据地址刚好是连续的,就可以一一对应出去多个整形参数了,问题是申请的堆内存传递进去后如何释放呢?没看到有释放的代码阿,难道是自动释放了吗?这么智能?
|
最佳答案
查看完整内容
ThreadParamFunc 里面释放了,但是这个要是失败的话,他没有释放;可以自己完善下,
[e=0].版本 2
.子程序 线程_启动多参_整数型, 整数型, 公开, 成功返回线程句柄,失败返回0。
.参数 子程序指针, 子程序指针
.参数 参数1, 整数型, 可空, 线程传入参数1
.参数 参数2, 整数型, 可空, 线程传入参数2
.参数 参数3, 整数型, 可空, 线程传入参数3
.参数 参数4, 整数型, 可空, 线程传入参数4
.参数 参数5, 整数型, 可空, 线程传入参 ...
|