什么更好:selectvs线程?

在Linux中。

我想build立一个自动刷新,当按下一个按键时,它将有一个启用/禁用function。 显然,应该有两件事并行运行(点击器本身和启用/禁用function)

什么是每个实施的利弊:使用一个线程,将处理autoclicking函数和另一个主线程(启用/禁用等)或使用系统调用select并等待input/键盘?

使用select可以更好地提高性能,尤其是在可能有数百个同时操作的情况下。 然而,编写代码可能很困难,编码风格与传统的单线程编程有很大不同。 例如,您需要避免调用任何阻塞方法,因为它可能会阻塞整个应用程序。

大多数人发现使用线程比较简单,因为大部分代码类似普通的单线程代码。 唯一困难的部分是在少数需要线程间通信的地方,通过互斥或其他同步机制。

在你的具体情况看来,你只需要少量的线程,所以我会去使用线程更简单的编程模型。

鉴于你正在做的工作量,这可能没有关系。

对于高性能应用程序,有一个区别。 在这些情况下,您需要同时处理数千个连接。 在这种情况下,您将新的连接切换到新线程。

创建几千个线程是昂贵的,所以选择用于提高效率。 实际上,不同的技术如kqueueepoll被用于最佳的切换。

我说这没关系,因为你可能只会创建一次线程,并且在应用程序的整个生命周期中只有两个线程正在运行。