嵌入式系统中的多线程

时间:2017-06-20 00:20:16

标签: multithreading pthreads embedded

我对以下内容感到困惑:

我希望能够在嵌入式系统领域找到一份工作。然而,我所进行的每次采访似乎最终都会谈到C中的线程以及如何进行线程安全编程

我的问题是如何在嵌入式系统中学习多线程?它们与POSIX线程相同吗?例如,FreeRTOS中的任务。它们和pthreads一样吗?

有人可以给我一些关于做什么和从哪里开始的提示?

3 个答案:

答案 0 :(得分:2)

每个操作系统都拥有自己的线程/任务/进程特性。 尽管存在差异,但在这些方法之间同步,保护和交换数据的方法大致相同。

如果有人知道您不了解特定操作系统,请您参加面试 - 他/她可能希望您回答一般情况而不是针对特定操作系统。 您可以解决POSIX(或任何其他)工具集的任何问题,并提及将解决方案迁移到非POSIX环境将保持相同的逻辑,并进行一些小的修改。

答案 1 :(得分:0)

无论是在RTOS还是Linux中,多线程概念几乎都是相同的。 不同之处在于操作行为。

  

我的问题是如何在嵌入式系统中学习多线程   系统

我的建议是首先通过引用一些在线资料来学习和理解多线程的概念,你可以通过在桌面上编写一些运行任何Linux的简单代码来练习。

使用Semaphore和Mutexes等一些高级主题,例如同步机制,您将了解何时使用信号量以及何时使用互斥锁进行线程同步的基本概念。

然后转到某些嵌入式目标并使用uCOS-II / uCOS-III或FreeRTOS试用一些代码。

  

它们与POSIX线程相同吗?

不,它们不完全相同,POSIX线程库有点先进,并且在不同的操作系统上具有高度可移植性。对于例如使用pthread在Linux上编写的多线程代码也可以在Windows上编译和执行,几乎没有变化。

另一方面,RTOS上的线程实现是不同的,RTOS中的线程被视为任务,只有在调用启动调度程序时才开始执行。

答案 2 :(得分:0)

根据我自己的尝试来寻找学习资源的经验,我发现the FreeRTOS docs非常有用。他们既有参考手册,也有Mastering the FreeRTOS Kernal doc,其中包括代码片段,并涵盖了诸如任务管理,软件计时器,资源管理和常规线程安全编程技术之类的主题。我认为这不是最好的起点,但是一旦您熟悉了基础知识,并提到了其他答案和意见,这将有助于下一步的边做边学。