我是多线程编程的新手(实际上,我不是多线程的新手,但我总是使用全局数据来读写线程,我认为这让我的代码变得又丑又慢,我很渴望提高我的技能)
我现在正在使用 c++ 开发一个转发服务器,为了简化问题,我们假设只有两个线程,一个接收线程和一个发送线程,而且,像往常一样愚蠢的设计,我有一个全局 std::保存数据的列表:(
receiving-thread
从服务器读取原始数据并将其写入全局 std::list。
sending-thread
读取全局 std::list 并将其发送给多个客户端。
我pthread_mutex_lock
用来同步全局 std::list。
问题是转发服务器的性能很差,写时全局列表被锁定receiving-thread
,但当时我sending-thread
想读,所以它必须等待,但我认为这种等待是无用的。
我该怎么办,我知道全局不好,但是,没有全局,我如何同步这两个线程?
我会继续从 SO 和谷歌搜索。
任何建议、指南、技术或书籍将不胜感激。谢谢!
编辑
- 对于任何建议,我想知道为什么或为什么不,请告诉我原因,非常感谢。