gpt4 book ai didi

c - 在 C 中等待中断的有效方法

转载 作者:太空狗 更新时间:2023-10-29 15:17:35 25 4
gpt4 key购买 nike

我在树莓派上使用 WiringPi。我用它分配了一个稍后调用的中断函数。在等待中断被调用时,我不确定该怎么做。

示例使用(自旋锁?)for (;;) 例如

int main()
{
// register interrupt
wiringPiISR( 18, INT_EDGE_BOTH, &myInterrupt );

for (;;) {
// really?
}
return 0;
}

我注意到 sleep 也有效。无论 sleep 如何,都会调用中断

int main() 
{
// register interrupt
wiringPiISR( 18, INT_EDGE_BOTH, &myInterrupt );

for (;;) {
sleep(1000000);
}
return 0;
}

使用最少的资源保持程序运行的最佳实践是什么(假设这是针对后台恶魔)?

来自其他语言,我原以为 for(;;) 会占用资源。我想知道该做什么或关于该做什么的指示(线程等)。

最佳答案

我最近不得不这样做。我的理论是KISS . sleep 根据定义编写为使用最少的资源 - 使用它意味着我不必关心线程。

在原始 Raspberry Pi B 上简单、可读且没有可衡量的性能影响:

int main() 
{
// register interrupt
wiringPiISR( 18, INT_EDGE_BOTH, &myInterrupt );

for (;;) {
sleep(UINT_MAX);
}
return 0;
}

请注意使用 UINT_MAX 来最小化 for 循环调用的数量 - 这假设一个无符号的 32 位定时器延迟,这是 WiringPi 使用的。

关于c - 在 C 中等待中断的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34945811/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com