如何设计C++;美国石油学会 对于高级的C++程序技术,如模板,我是相当新的, 但是我正在为我正在进行的一个项目开发一个简单的API
您调用的函数或方法可能需要很长时间才能完成。 本质上,它是通过网络传输文件 看起来有点像这样如何设计C++;美国石油学会 对于高级的C++程序技术,如模板,我是相当新的, 但是我正在为我正在进行的一个项目开发一个简单的API,c++,api,C++,Api,您调用的函数或方法可能需要很长时间才能完成。 本质上,它是通过网络传输文件 看起来有点像这样 Client { int WriteFile(); int ReadFile(); } 但我想在这里有几个选择 调用WriteFile并阻止它 调用WriteFileAsync,但不阻止它 在异步版本中,我可以灵活地了解如何完成任务 能够轮询客户机,找出我当前的读写状态 手术 我对如何设计好C++模式有点不知所措。 避免使用boost是一项要求,但我可以使用类似boost的方法。 尽管如此,我
Client
{
int WriteFile();
int ReadFile();
}
但我想在这里有几个选择
一个需要完成的事件。我的建议是查看boost::asio的文档和教程(您可以将其用作boost的一部分或独立asio项目的一部分,但我猜要求不是外部LIB,而不仅仅是boost) 通常,阻塞调用很容易定义,而非阻塞操作需要一些回调机制,以便在操作完成时通知用户操作的结果。再次,看看教程和文档,了解一个干净的界面,它比标题更容易浏览
编辑:ASIO支持不同的协议,因此它可能比您需要的更复杂,请阅读其中一个示例,了解如何使用回调机制。关于异步调用的使用,我建议您阅读C++0x未来的设计 基本上,这个想法是将代理交给用户,而不是普通类型。此代理知道线程,可用于:
- 对完工情况进行民意测验
- 得到结果
C++0x的新线程API设计得非常巧妙(主要采用Boost.Threads之后的方法),可以让您深入了解如何设计多线程。您希望避免使用Boost,但希望采用类似Boost的方法。那么,什么是类似于boost的方法呢?我的意思是,如果有人向ASIO建议一个boost风格的解决方案,那就好了。唯一的问题是我不明白ASIO是如何实现的。模板地狱。