同步来自多个对象的异步调用
Synchronize asynchronous calls from more than one object
我有大约10个对象。每个对象都是不同的类。发送给这些对象的请求(带有返回值的方法调用)来自不同的线程。
我需要同步这些方法调用,一次只能执行一个。有些请求具有比其他请求更高的优先级。这意味着如果有更多的请求等待执行,并且发送了一个优先级高于其他等待执行的请求,则该请求将作为下一个请求执行。
我不知道如何用c++解决这个问题。我在考虑命令模式,但它需要大量的"手动"编码。我必须将每个方法调用转换为命令对象。问题在于返回值。有人知道这里可以用什么句型吗?
对于同步,您可以使用某种形式的互斥,以便一次只有一个线程在操作对象。
处理优先级时,您可能需要一个带有比较器的优先级队列,以确定哪种类型的请求具有更高优先级的标准。
每个对象都将接受执行操作的请求,并且它将具有与之关联的优先级和操作(就像您建议的命令模式一样)。使用锁定机制,它将通过添加记录来更新优先级队列,然后释放它。它必须锁定队列,因为它是通过多个线程访问的。不需要显式排序——队列总是按照最高优先级排序。因此,要处理命令,只需获取队列中的第一个项目(如果有),然后执行该操作。
相关文章:
- 如何在 c++ 中异步调用静态方法?
- 在 NodeJS 异步调用C++ DLL
- Qt异步调用:如何在异步调用完成任务后运行一些东西
- 重构后,异步调用方法不再有效
- 通过谷歌测试测试异步调用
- 如何使用从Swift代码中调用的线程在C 上制作异步调用功能
- 如何从 dart 对用 C/C++ 编写的函数进行异步调用
- 异步调用槽,而不使用清晰的代码行连接到它
- 修复此标准::异步调用
- V8 JavaScript 如何进行异步调用
- 进行异步调用 - 我必须创建自己的p/s吗?
- C++异步调用最佳实践
- 处理多个std::异步调用
- JNI:C++是否异步调用Java
- 使用 Emscripten 异步调用 JavaScript C++函数
- 如何在 Kernal32.dll 中异步调用 ReadFile()?C#.
- 使用JNI异步调用Java方法
- C++:如何异步调用同步库调用
- 对ReadFile函数的异步调用返回6个错误代码
- 在c++中异步调用CreateFile和ReadFile