首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 多个线程同步
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zgl88161104
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 结帖率:
    发表于:2008-08-20 15:32:55 楼主
    我创建1000个线程,想要确定1000个线程和时结束 但是waitformultiobjects.但是他只是等待64个对象,
    所以我写了下面的代码:
     int time_64 ;
    int j;
    int i ;
    //根据重复的次数来创建线程,默认的堆栈1M
    for(i = 0 ;i <times ;i++)
    {
      Handle[i] = CreateThread(NULL,0, ThreadCreate3,(LPVOID)&MyThreadInfo,0,&ThreadID);
    }

    time_64 = i/64 ;
    pHandle = Handle ;
    //由于每次只能等待64个对象,循环等待所有的进程结束
    for( j = 0; j <time_64  ;j++)
    {
    ::WaitForMultipleObjects( 64 ,pHandle ,TRUE ,INFINITE);
    pHandle = pHandle +64*sizeof(HANDLE) ;
    }
    ::WaitForMultipleObjects( times -j*64 ,pHandle ,TRUE ,INFINITE);
    但是我感觉有错误的,因为线程结束是没有顺序的,可能63个线程最后结束,那么第一个循环没有结束下面的进行不了,也是说waitformultiobjects等待了已经结束线程,回出现什么情况呢?该怎么样修改呢?
    0  修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved