如果我想使用完成端口从不同的线程获取信息,
我该如何设计程序的结构?下面的那个怎么样?
如果我想使用全局函数,我该如何设置互斥锁?
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();
}
}
答案 0 :(得分:0)
试试这个解决方案:
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后不会被调用。
答案 1 :(得分:0)
Push Framework,http://www.pushframework.com也使用了这个设计,只是它添加了另一个线程来接受传入的连接。