关于IOCP的一个问题

发布于 2024-07-16 14:54:35 字数 398 浏览 6 评论 0原文

如果我想使用完成端口从不同线程获取信息,

我该如何设计程序的结构?下面的怎么样?

如果我想使用全局函数,如何设置互斥体?

Main(){
  for i in range NumOfThreads{
    CreateIoCompletionPort() 
    CreatThread(ThreadFun)
  }
}

ThreadFun(){

    While(1){
      GetQueuedCompletionStatus(); // wait for completion of an IO
      Process What ever has completed ();
      Start another file operation();
    }

}

If I want to use completion port to get information from different thread ,

how can I design the structure of the program?How about the one below?

If I want to use a global function ,how can I set the mutexes ?

Main(){
  for i in range NumOfThreads{
    CreateIoCompletionPort() 
    CreatThread(ThreadFun)
  }
}

ThreadFun(){

    While(1){
      GetQueuedCompletionStatus(); // wait for completion of an IO
      Process What ever has completed ();
      Start another file operation();
    }

}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

2024-07-23 14:54:35

尝试这个解决方案:

Main(){
  for i in range NumOfThreads{
    CreateIoCompletionPort() 
    CreateThread(ThreadFun)
  }

  for i in range NumOfCallerThreads
    CreateThread(ThreadCaller)
}

ThreadCaller(){
  While(1){
    Start another file operation();
  }
}


ThreadFun(){
    While(1){
      GetQueuedCompletionStatus(); // wait for completion of an IO
      Process What ever has completed ();
    }
}

您可以在没有任何关键部分的情况下完成它! 您所需要的只是保证“开始另一个文件操作();” 关闭相应的IOCP后不会被调用。

Try this solution:

Main(){
  for i in range NumOfThreads{
    CreateIoCompletionPort() 
    CreateThread(ThreadFun)
  }

  for i in range NumOfCallerThreads
    CreateThread(ThreadCaller)
}

ThreadCaller(){
  While(1){
    Start another file operation();
  }
}


ThreadFun(){
    While(1){
      GetQueuedCompletionStatus(); // wait for completion of an IO
      Process What ever has completed ();
    }
}

You can do it without any critical sections! All you need is a guarantee that "Start another file operation();" will not be called after closing corresponding IOCP.

∞觅青森が 2024-07-23 14:54:35

Push Framework,http://www.pushframework.com 也采用了这种设计,只不过多了一个线程接受传入连接。

Push Framework, http://www.pushframework.com uses this design too, except that it adds another thread to accept incoming connections.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文