C++ 如何每隔30毫秒读取一个文件并在新线程中处理它?

C++ 如何每隔30毫秒读取一个文件并在新线程中处理它?,c++,multithreading,C++,Multithreading,我有一个包含几个整数的文件(每一个都在新行中)。我想每隔30毫秒读取一次文件,并处理每个整数 软件:C++ 当前想法: 1) 在main()中,使用文件输入/输出连续读取文件,每次睡眠30毫秒。 2) 每次我读取一个整数时,我都会创建一个处理这个整数的新线程 main()是否将被挂起,直到新线程完成其操作?或者它也会并行运行? 有没有更好的方法来完成同样的过程?这个想法在理论上是可行的。您确实创建了很多线程,这是低效的。如果没有足够的CPU内核,在某个特定时刻,主线程将不再每隔30毫秒调度一次,

我有一个包含几个整数的文件(每一个都在新行中)。我想每隔30毫秒读取一次文件,并处理每个整数

软件:C++

当前想法: 1) 在main()中,使用文件输入/输出连续读取文件,每次睡眠30毫秒。 2) 每次我读取一个整数时,我都会创建一个处理这个整数的新线程

main()是否将被挂起,直到新线程完成其操作?或者它也会并行运行?
有没有更好的方法来完成同样的过程?

这个想法在理论上是可行的。您确实创建了很多线程,这是低效的。如果没有足够的CPU内核,在某个特定时刻,主线程将不再每隔30毫秒调度一次,因此您将落后


更好的解决方案是有一个线程池,其线程拾取主线程提供的数字。

如果您正在创建一个线程来处理每个整数(您正在说),那么主线程将继续运行。但是,如果处理时间超过30毫秒,只会产生更多的线程,并且会耗尽资源。您是否真的需要每隔30毫秒检查一个新的整数,或者只是以特定的速率处理它们?无论哪种方式,我都会让1个线程检查文件并将整数推送到处理线程将从中读取的队列中。我看不出有任何理由在这里有超过2个线程。我看不出有任何理由有线程。只有当您需要同时做多件事情时,它们才有用。你没有那样做。还有Evert说的:如果一个线程不能在30毫秒内完成,那么多个线程也不能完成。@Evert:错。如果处理时间平均为60毫秒,则平均有2个活动线程。假设至少有两个CPU核,则不会耗尽资源。@Evert:True。处理时间不会超过30毫秒。它将在时间范围之前返回主管道。