以原子方式执行C代码

时间:2014-06-17 09:00:41

标签: c atomic

我想知道是否可以以原子方式在C中执行两个连续的指令。这意味着我不希望在执行此指令时,操作系统(Linux)中执行的任何其他进程消耗处理时间。

谢谢!

3 个答案:

答案 0 :(得分:1)

没有。一个进程无法阻止其他所有人。对于多用户系统而言,这将是非常糟糕的,即使在单用户系统上,它也有相当可怕的故障模式。

您可以提高优先级,但即使这样,您也会被中断和系统级进程抢占。

你可以做的最好的事情就是防止他人跑,就是使用锁,这使得其他合作进程在获取同一个锁时会睡眠。

答案 1 :(得分:1)

没有

操作系统可以随时中断您的程序。 C编程语言没有指定如何调度执行线程,也没有提供影响这种调度的方法。

您可以获得的最好的方法是指定两个特定的执行线程不能在某些点交错。然而,这需要双方同步。也就是说,您可以说线程A中的此代码不应与线程B中的代码交错,但您不能说线程A中的此代码不应与任何其他内容交错。

答案 2 :(得分:0)

执行所需操作的方法是在内核空间中。可以处理内核驱动程序中的中断并暂停其他进程。但是这样做假设你有充分的理由去做这个以及非常好的内核黑客知识。