10

在 Linux 中。

我想构建一个自动点击器,它在按下一个键时将具有启用/禁用功能。显然应该有两件事并行运行(答题器本身,以及启用/禁用功能)

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

4

2 回答 2

10

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

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

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

于 2012-05-06T21:30:13.050 回答
1

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

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

创建数千个线程的成本很高,因此选择用于提高效率。实际上,不同的技术(例如kqueueepoll)用于最佳切换。

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

于 2012-05-06T21:30:30.703 回答