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

时间:2012-05-06 21:25:09

标签: c linux multithreading algorithm select

在linux中。

我想构建一个自动转向器,当按下某个键时,它将具有启用/禁用功能。显然应该有两个并行运行的东西(点击器本身和启用/禁用功能)

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

2 个答案:

答案 0 :(得分:7)

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

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

在您的特定情况下,您似乎只需要少量线程,因此我会选择使用线程的简单编程模型。

答案 1 :(得分:1)

考虑到你正在做的工作量,这可能并不重要。

对于高性能应用,存在差异。在这些情况下,您需要同时处理数千个连接;在这种情况下,您将新连接移交给新线程。

创建数千个线程非常昂贵,因此选择用于提高效率。实际上,kqueueepoll等不同技术可用于最佳切换。

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