c++ - usleep vs std::this_thread::sleep_for,在 linux 串行端口上写入/读取时

标签 c++ linux serial-port usleep

我创建了一个 C++ 应用程序,它需要通过串行端口连接到调制解调器才能发出 AT 命令。 我遵循了以下答案:how to open, read, and write from serial port in C效果很好。 在代码的某些地方提到工作线程应该休眠足够的时间,以便字符的发送和读取保持一致。

usleep ((7 + 25) * 100);  

由于我对 usleep 等 linux 系统调用不够熟悉,我想问一下这个调用对于与我的程序并行运行的其他 linux 进程是否安全,或者我应该使用 c++ 默认线程挂起执行类似 std::this_thread::sleep_for?
的方法 如果我使用 usleep,我应该注意什么?

最佳答案

您唯一应该注意的是这在 Windows 上不起作用(没有 usleep 函数,因为 usleep 是操作系统特定的)。您在帖子中提到的代码可能是旧的并且是 C++11 之前的标准。在 C++11 之前,没有标准的线程库,所以人们不得不使用特定于操作系统的东西。

如果您有 C++11(在 Linux 上应该是这样),那么您可以使用这个可移植版本(如果您不打算在 Windows 上运行此代码,那可能没关系):

#include <chrono>
#include <thread>
...
std::this_thread::sleep_for(std::chrono::microseconds(usec));

没有办法回答这对其他进程是否安全。我看不到你程序的代码。这可能是安全的,也可能不是,这取决于您在做什么以及还有谁会读取或写入串口。

关于c++ - usleep vs std::this_thread::sleep_for,在 linux 串行端口上写入/读取时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48383565/

相关文章:

.net - 用于多个平台的 Mono 中的串行端口 (rs232)

c++ - Qt 应用程序中具有共享资源的工作线程

c++ - 在 Xcode4 中使用 Boost

c++ - 将外部库添加到 cmake 项目

c# - 在 C# 中模拟 linux openssl 命令

python - 如何分别从一个子进程fork一个子进程

c++ - 计算 (a^b)%c 其中 0<=a,b,c<=10^18

c++ - 基于范围的循环中的 const 引用不起作用

linux - Bash - : ls | grep 的替代品

java - 如何从InputStream中读取二进制协议(protocol)?