当前位置:首页 » 软件开发
开发技术指南» 文章正文
    引言: 前段时间做的一个项目, 其中涉及对管理多线程句柄的要求。
 

 

    摘要: 关于"建立空文档失败"的问题的分析! 许多新手在遇到此类问题时总是措手无策,如果谁有耐心就看看我写的下面这片文章吧。 这类问题的出现主要在bool cwinapp::processshellcommand(ccommandlineinfo& rcmdinfo); 函数的关键内容:bool bresult = true;switch (rcmdinfo.m_nshellcommand......
 ·odbc & access    »显示摘要«
    摘要: odbc 与 access 这是一篇关于本人使用odbc 具体步骤(visual c++6.0 +access 2000)动态创建数据源,数据库(默认test.mdb),表及其查询,插入,修改,删除。 一般说来odbc数据库的使用分为以下几步是: 创建数据库对象-> 连接数据库-> 创建记录集-> 打开记录集-> 操作记录集- > 关闭和销毁记录集-> ......


Win32下对多个的线程句柄的关闭的控制(上)
前段时间做的一个项目, 其中涉及对管理多线程句柄的要求.现在整理一下思路,将它写出来,希望对部分的朋友有所帮助.

线程句柄是一种内核对象,一定完全关闭之,否者程序运行了一段时间后会占用全部的cpu.在平时我们会看到下面的程序: 【程序编程相关:Windows自带的小巧的调试利器

我的程序要实现的功能是:多个同时运行的子线程中,当有一个子线程运行结束时,主线程要及时地或者在某个有效范围内关闭子线程句柄;而且在程序运行过程中,还要不断地开辟子线程.换一句话说,我的主线程要动态地管理子线程(句柄). 【推荐阅读:有关引用以及LoadBitmap几个容易

{ 【扩展信息:用VC++进行MapX二次开发::之二-

for (int i = 0; i < max_num_thread; i++)

           hthread = createthread(null, 0, functhread, null, 0, null);

             

              // 主线程处理其它事务

              // ......

              closehandle(hthread);  

}

运气好的话,上面的程序可能可以运行.有可能出现一种情况是子线程还没结束时,主线程这里已经closehandle了.为了效率,我们可不能在主统线程里加入像sleep(…)这样的语句.但多线程的运行情况是不可预测的,我们只有写出安全的代码,才能控制多线程程序的运行.我们先来解决这个问题,然后深入一步解决我在实际项目中遇到的问题.这里我们要用到waitformultipleobjects这个win32 api.这个api在这里的功能是当一个子线程运行结束时得到通知,然后进行关闭句柄的操作.于是我们将上面的代码改写成下面这个样子:

handle arrayhandle[max_num_thread];

      for (int i = 0; i < max_num_thread; i++)

       {


...   下一页
 ·com之套间(apartment)    »显示摘要«
    摘要: com之套间 参考资料:《essential com》、《msdn》 什么是套间 套间(apartment),形象点,他就是一个用来装com对象的容器,一个套间内可以有多个com对象,但是对于每个com对象在某一时刻只能够属于某一个套间。 套间用途和存在意义 假设你使用过com。我们在一个线程a里创建了一个com对象,那么在线程a里我们就可以访问该com对象的方法、属性......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE