VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 181|回复: 3

[交流] 突然想到老大的 一个 IOCP 创建线程的问题

[复制链接]
softcheng 发表于 6 天前 | 显示全部楼层 |阅读模式
3驿站币
如题 ,老大有个文件服务器下载的 例子 ,里面用CPU 数量创建线程 ,如下


        //创建工作者线程
        SYSTEM_INFO     systeminfo;//系数信息,主要是用于取得CPU数量
        GetSystemInfo(&systeminfo);
        int  m_nThreads = systeminfo.dwNumberOfProcessors*2;
        for (int i=0;i<m_nThreads;i++)
        {
                HANDLE wthread=CreateThread(NULL, 0, WorkerThread, pthis, 0, NULL);
                CloseHandle(wthread);
        }

m_nThreads = 2,和  1 有什么区别,线程做的是一样的事


//////////////////////////////////////////////////////////////////////////
///工作者线程
//////////////////////////////////////////////////////////////////////////
DWORD WINAPI WorkerThread(LPVOID lpParam)//工作者线程
{
  CSIOCP* pthis=(CSIOCP*)lpParam;//取出窗口指针
  SOCKET   sClient;       //在GET后这将是当前完成的套接字
  DWORD  dwBytesTransferred;//重叠结构中的字节数  
  LPPER_IO_OPERATION_DATA lpPerIOData = NULL; //GET后就是PIO的结构从中可以取出很多东西

  while (m_workthread)
  {
          BOOL bReturn=GetQueuedCompletionStatus(m_hiocp,&dwBytesTransferred,(unsigned long *)&sClient,
                  (LPOVERLAPPED *)&lpPerIOData,INFINITE);
          ///
          if (dwBytesTransferred == 0xFFFFFFFF)//收到退出信号
          {
。。。。。。。。

为什么要获取 CPU 数量再创建,直接创建不就行了,这样的创建多个感觉没什么用

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

freehawkzk 发表于 5 天前 | 显示全部楼层
没细看代码,不过我觉得创建工作者线程之前获取一下CPU核心数目,再创建适当数量的线程,能够降低线程在CPU之间切换所带来的资源消耗。

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

Syc 发表于 5 天前 | 显示全部楼层
楼上正解

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

 楼主| softcheng 发表于 5 天前 | 显示全部楼层
一般CPU = 2,就是创建两个线程, 那我当做CPU = 1,一样创建,能有什么区别

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入驿站

本版积分规则

展开

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

返回顶部
x

VC驿站微信公众号cctry2009

GMT+8, 2017-10-18 04:43

Powered by Discuz!

© 2009-2017 cctry.com

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