什么是更好的:选择vs线程?

Jah*_*Jah 8 c linux algorithm select multithreading

在linux中.

我想建立一个自动转向器,当按下一个键时,它将具有启用/禁用功能.显然应该有2个并行运行的东西(clicker本身,以及启用/禁用功能)

每个实现的缺点和优点:使用将处理自动点击功能的线程和另一个主线程(用于启用/禁用等...)或使用系统调用选择并等待输入/键盘?

Mar*_*ers 7

使用select对于性能更好,特别是当您可能有数百个同时操作时.然而,正确编写代码可能很困难,编码风格与传统的单线程编程非常不同.例如,您需要避免调用任何阻塞方法,因为它可能会阻止整个应用程序.

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

在您的特定情况下,您似乎只需要少量线程,因此我会使用线程来寻求更简单的编程模型.

  • 第一句话需要引文.我怀疑在现代系统上它比这复杂得多.当然,有多个*文件描述符在运行,线程允许内核简单地唤醒被阻塞的线程,而不是"select"必须重复扫描数组中的"N"位,并在每个等待队列中添加/删除自己.线程似乎也能够针对最少的用户内核转换进行优化.可能有其他正交原因线程较慢,但我不认为这是一个如此简单的明确问题. (5认同)