Unix C++ 第三方 API 调用
Posted
技术标签:
【中文标题】Unix C++ 第三方 API 调用【英文标题】:Unix C++ Third party API Call 【发布时间】:2015-02-09 11:50:06 【问题描述】:我在我的 C++ 应用程序中使用从第三方 SO 文件导出的 API。该第三方 API 正在向我的 Unix 控制台写入一些消息。我假设 API 使用了多线程的概念,因为我可以发现进入控制台的输出是混合的(来自我的程序的输出以及来自这个第三方 API 的输出),如下所示:
来自我的程序的消息:My program
来自 API 的消息:I am an API
最终输出:My I am an program API
有什么方法可以分开两条消息吗? 第三方 SDK 文档不提供任何错误/消息处理机制或任何线程同步机制。
谁能帮忙?
【问题讨论】:
这确实是图书馆创始人的问题。如果没有更多信息,这里的任何人都可以为您提供所需的帮助,这是值得怀疑的。 【参考方案1】:线程输出同步和缓冲必须在输出它的应用程序级别上完成。你得到的东西已经交错了,不能合理地分开。所有线程/进程都在写入同一个文件描述符(更糟糕的是,如果它们使用stdout
,它们每个都有自己的输出缓冲区),所以如果该应用程序没有调度它们的输出消息,那么设计就会被破坏你能做的很少。
它是什么类型的应用程序?如果它是一个 shell 脚本包装器,则有可能在顶部完成并行化,并且可以正确地进行反汇编和缓冲。
【讨论】:
以上是关于Unix C++ 第三方 API 调用的主要内容,如果未能解决你的问题,请参考以下文章