选择与线程哪个更好?

问题描述 投票:0回答:2

在 Linux 中。

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

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

c linux multithreading algorithm posix-select
2个回答
12
投票

使用

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

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

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


2
投票

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

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

创建几千个线程的成本很高,因此选择是为了提高效率。实际上,使用不同的技术(例如

kqueue
epoll
)来实现最佳切换。

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

© www.soinside.com 2019 - 2024. All rights reserved.