Multithreading 如何将多线程任务转换为单线程任务?

Multithreading 如何将多线程任务转换为单线程任务?,multithreading,Multithreading,例如,如果一个项目需要一个日志系统,而不是直接写入日志文件或将日志文件包装到监视器对象中,我们可以启动一个专用的日志线程,这是唯一一个将记录日志的线程 如果其他线程想要写入日志,它会向这个专用线程发送一条消息。然后,日志线程可以顺序地将日志从其消息队列写入日志文件 我认为这是一种比多线程设计更好的设计,在多线程设计中,每个例程编写日志都应该使用某种同步方案 我说的对吗?您能否提供更多的方法/示例来将多线程问题转化为简单的单线程问题 我认为这是一种比多线程设计更好的设计,在多线程设计中,每个例程编

例如,如果一个项目需要一个日志系统,而不是直接写入日志文件或将日志文件包装到监视器对象中,我们可以启动一个专用的日志线程,这是唯一一个将记录日志的线程

如果其他线程想要写入日志,它会向这个专用线程发送一条消息。然后,日志线程可以顺序地将日志从其消息队列写入日志文件

我认为这是一种比多线程设计更好的设计,在多线程设计中,每个例程编写日志都应该使用某种同步方案

我说的对吗?您能否提供更多的方法/示例来将多线程问题转化为简单的单线程问题

我认为这是一种比多线程设计更好的设计,在多线程设计中,每个例程编写日志都应该使用某种同步方案

在专用线程是唯一写入日志的线程的设计中,您也必须使用同步,除了需要同步对写入日志的线程的生产者-消费者队列的访问,而不是同步对日志的访问

您能否提供更多的方法/示例来将多线程问题转化为简单的单线程问题


问题并没有变得更简单:同步的需求没有消失,只是从一个地方移到了另一个地方。

我认为同步生产者-消费者队列比同步大量写入/读取例程容易得多……加上磁盘/网络延迟与主应用程序隔离,争用减少因为队列只需锁定足够长的时间就可以将指针推到队列上,所以像延迟写入这样的优化可以在几乎没有影响的情况下完成,而像更改日志文件、每天打开一个新日志或限制每个日志文件的大小这样的管理操作更容易。