C 程序 - Uni 处理器系统上的输出?

标签 c multithreading synchronization

在嵌入式系统中,由于各种合理的原因,趋势仍然没有完全转向多核处理器。

因此,了解单处理器系统使用各种机制和多线程功能的同步行为仍然很重要。此外,每当我接受采访时,他们都会问我有关特定 C 程序在 uni 处理器系统上的行为的问题。

那么,如果我想分析单处理器系统上的示例 C 程序,以检查它们在家中的行为,我该怎么做?我家里的CPU是Core i3处理器。有没有一种方法可以让我的操作系统或编译器仅考虑一个 CPU 来强制检查行为?

示例:

int x=0;

代码片段-1

    while(x);
    x++;

片段-2

    while(!x);
    x--;

考虑到单处理器系统,我想检查 C 程序的行为,其中

  • 代码段 1 和代码段 2 位于多个线程中
  • 代码段 1 在主程序中,代码段 2 在 ISR 中
  • Snippet1 和 Snippet2 都在两个不同的 ISR 中(考虑中断是按优先级捕获的,并且在 ISR 内部时,如果有更高优先级的新中断,则立即执行具有最高优先级的中断 - 例如:复位)

在上述问题中,我的主要目标是确定是否会出现死锁,如果存在,需要确定解决方案。请说出你的想法。谢谢。

最佳答案

您可以根据需要使用“maxcpus”内核参数设置来启动您的 Linux。 它指定 SMP Linux 内核应使用的最大处理器数量。 例如 maxcpus=1。

关于C 程序 - Uni 处理器系统上的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11823759/

相关文章:

c - 在结构体内部定义结构体指针

python - AttributeError : 'module' object has no attribute 'lock'

java - 如何应用同步?

node.js - writeHead是非阻塞IO命令吗?

java - 无等待和无锁算法的示例/说明

javascript - 如何让它等到一切完成直到下一次迭代

c - 为什么 oldolduname 和 uname 之间有区别?

c - 危险的指针转换导致失去 const 资格

c - 在 C 中使用字符串数组时出错

ios - 在 iOS 后台线程中使用自动释放变量