Semaphore.h without RTOS
Semaphore.h without RTOS
我想知道我是否可以使用API Smahaphore中的C 编程的Linux OS使用信号量和静音。H。
我尚未处于代码开发/写作阶段,但目标是在接收器上进行读数,该接收器以115,200的波特率发送异步二进制数据。然后,必须尽可能快地将此数据传输到调制解调器中。
我正在考虑使用RTO,但我对启动加载程序以及如何在芯片或嵌入式环境上获取Linux或任何其他操作系统都不知道。
可以在由信号和管道互连的单独线程中写下这些读写功能,并添加信号量的?
当我必须以另一种格式格式化收到的数据,仅解析所需的字符串或必须数学上修改它们时,可能需要信号量。在发送它们之前。
使用非RTO时是否可以收到信号量的好处?我只看到与RTOS合作应用的。
POSIX信号量与多线程Linux应用程序中的同步相比,与嵌入式应用程序中的RTOS符号相比。
考虑一下115200的波特rate含义 - 这是每秒11520个字符(假设8N1)或每个字符约86.8 USEC。现在,Linux操作系统是实时的善变的事情,但是我们肯定会在大约1毫秒的粒度上遇到麻烦,假设我们有1000Hz核心(只要您设置调度程序),这是大约11.5倍的核心。此外 - 从某种意义上说,这是最坏的情况延迟 - 批处理字符的写作将几乎具有完美的字符与字符潜伏期,假设您可以保持外向的缓冲区的填充。
现在回答以下问题:您的应用程序可以容忍什么?根据答案,您必须考虑不同的事物 - 从Linux的实时补丁到混合Xenomai/rtai到像RTEM这样的完整RTOS。有了我目前对您的情况的理解,我会说使用1000Hz内核可能足够了。
Linux串行备案记录器可以同时在不同的线程中写入和阅读,而没有任何问题。您可以将这些任务与不同的线程分开,或者使用非块IO来换取无关紧要的延迟,只要您的处理很轻 - 这可以避免上下文开关,这很好,因为它们很慢。换句话说,如果使用线程或非块模式,您不需要引入信号。
最后 - 信号量实际上是所有OS的
- dynamic_cast without RTTI
- 将 RTOS 队列对象封装在仅具有静态分配的 IQueue 自定义接口中
- Qt - QQuickWidget setSource without freezing UI
- "in-situ without memory allocation" 字符串的愚蠢实现意味着什么?
- C++线程"Call to non-static member function without an object argument"
- 第一个任务的代码在 RTOS 中切换
- C++ Wrapper for threadx RTOS?
- FreeRTOS(和其他RTOS)也是一个框架吗?
- "How to make a recursive call for palindrom numbers without reverse function in c++?"
- C++互斥锁和RTOS xMutex之间的区别
- 如何使用 std::transform with container without push_back.
- MBED RTOS将Float转换为字符串/字符阵列
- Poco::Net::HTTPClientSession throw exception without unique_
- C++线程未加入"Termination called without active exception"
- 如何理解pthread_cancel导致"terminate called without an active exception"?
- Android Studio without Java
- 为什么我的代码在Linux上比在RTOS上更快
- Variadic Macro without __VA_ARGS__
- Semaphore.h without RTOS
- "Else without a previous if"