class NetworkRPCConnection { std::thread t;public: NetworkRPCConnection() : t([](){maintain_connection();}) {} ~NetworkRPCConnection(){close_connection(); t.join();}}
这工作正常,但在共享库中创建线程是不好的做法吗?是否值得在api文档中提及,或者隐藏此实现细节是否更好?
解决方法 一般来说,最好避免在共享库中创建线程,但在某些情况下可以正常 – 但在这些情况下,您确实需要在API中记录它.您需要记录它的原因是线程可以很难交互以预测某些 *** 作的方式 – 特别是fork()和信号;这使得无法将线程完全“隐藏”为实现细节,因为库用户需要了解它.
至于为什么最好不要创建线程:通常,库的用户可以更好地了解他们的线程模型 – 例如,他们可能已经拥有了可以完成工作的线程,因此创建另一个线程只会产生额外的开销(并限制其实施).但是如果你非常了解库用户的需求,并且知道需要一个专用线程,并且可以处理线程生命周期的所有方面 – 那么自己创建和管理线程可能没问题 – 但是,如上所述,你肯定需要记录它.
@H_502_30@ 总结以上是内存溢出为你收集整理的c – 在共享库中创建线程是不好的做法吗?全部内容,希望文章能够帮你解决c – 在共享库中创建线程是不好的做法吗?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)