Qore在多线程环境中流

时间:2018-02-11 11:06:42

标签: qore

Qore流文档(https://qoretechnologies.com/manual/qorus/latest/qore/lang/html/class_qore_1_1_output_stream.html)表示无法从创建对象的其他线程调用流实例(我真的看到硬编码的检查代码段if (tid != gettid()) then raise exception。这似乎是一个巨大的限制,因为甚至锁定也没有帮助。

当我需要使用来自更多线程的流对象时,我们应该采用什么解决方案?

我可以想象额外的"流"线程和队列只作为解决方案。

1 个答案:

答案 0 :(得分:2)

由于性能原因,迭代器和流都限于单线程使用,并且因为在Qore流的设计和实现时,没有使用内置流对象来识别使用来自多个线程的流的实际用例已经完成了。

您可以实现自己的支持多线程使用的流,因为抽象基类InputStreamOutputStream的最小内部C ++实现不包含对多线程使用的任何限制。

如果您确实需要内置流中的多线程支持,那么可以扩展Qore以允许在子类中实现适当的锁定。例如。