Linux mutex为什么不能用在中断函数

Linux mutex为什么不能用在中断函数,第1张

Linux mutex不能用在中断函数原因:Backtrace来看,应该是i2c_transfer中调用mutex_lock导致schedule调用。

pthread_mutex_lock(&qlock)表示尝试去把qlock上锁,它会先判断qlock是否已经上锁,如果已经上锁这个线程就会停在这一步直到其他线程把锁解开。它才继续运行。所以代码中要么是线程1先执行完后执行线程2,要么就是线程2先执行,再执行线程1.而线程3一开始就执行了。

中断函数防止方法:

要防止中断冲突,其实就是要知道什么设备容易产生中断冲突,只要知道了这点,在使用这些设备时稍微注意一下就可以了。下面我列出一些容易冲突的设备,希望对读者有用。

1、声卡:一些早期的ISA型声卡,系统很有可能不认,就需要用户手动设置(一般为5)。

2、内置调制解调器和鼠标:一般鼠标用COM1,内置调制解调器使用COM2的中断(一般为3),这时要注意此时COM2上不应有其它设备。

Linux线程的几种结束方式

Linux创建线程使用

int pthread_create(pthread_t *thread, const pthread_attr_t *attr,

void *(*start_routine)(void *), void *arg)

1

2

Linux线程的几种结束方式:

调用pthread_exit(exit_code),exit_code为线程退出的状态代码。同一进程下的其他线程可以通过pthread_join(exit_code)来使用。

函数start_routine使用return返回,与调用pthread_exit()作用相同。

线程被取消pthread_cancel()。

同一进程中的其他线程调用了exit(),,或者主线程从main函数返回。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7382025.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-05
下一篇 2023-04-05

发表评论

登录后才能评论

评论列表(0条)

保存