usleep vs std::this_thread::sleep_for,当在 Linux 串行端口上写入/读取时
usleep vs std::this_thread::sleep_for, when write/read on a linux serial port
我创建了一个 c++ 应用程序,该应用程序需要通过串行端口连接到调制解调器才能发出 AT 命令。我遵循以下答案:如何在 C 中从串行端口打开、读取和写入,效果很好。在代码的某个点中提到,工作线程应该休眠足够的时间,以便发送和读取字符保持一致。
usleep ((7 + 25) * 100);
由于我对像 usleep 这样的 linux 系统调用不够熟悉,我想问一下这个调用对于与我的程序并行运行的其他 linux 进程是否安全,或者我应该使用 c++ 默认线程挂起执行方法,如 std::this_thread::sleep_for?
万一我使用睡眠,有什么我应该注意的吗?
您唯一应该注意的是,这不适用于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++输出与Python不同的消息(从串行端口读取)
- 无法从串行端口读取.WaitCommEvent() 永远不会返回
- 读取文件在多次串行端口读取后ERROR_INVALID_HANDLE
- 使用 C++ 从 Linux 串行端口读取会提供混乱的数据
- C 从具有CreateFile的串行端口读取
- 从串行端口读取确切的N个字节
- 如何在使用 WxWidgets 从串行端口读取时不断更新我的面板绘图
- 串行端口:读取文件和关闭句柄
- 从串行端口读取而不从缓冲区中删除(linux)
- 仅当数据从另一侧(c++)发送时,才从串行端口读取
- 使用C++/Visual Studio从串行端口读取数据
- Linux 串行端口读取 - 我可以更改输入缓冲区的大小吗?
- 使用升压asio从串行端口读取最新数据
- C、Linux 中的串行端口读取/打开错误
- 阻止串行端口读取
- boost::asio 在从串行端口读取时阻止 std::cout
- 在Visual C++Express 2010中从串行端口读取
- 如何正确使用COMMTIMEOUTS和从串行端口读取的OVERLAPPED IO模式
- 从c++中的串行端口读取不同包大小的数据流的最佳方式
- 在c++和Linux中,在有超时的情况下向串行端口写入和从串行端口读取数据