当前位置: 技术问答>linux和unix
linux多线程无法进行阻塞方式的读写操作
来源: 互联网 发布时间:2016-03-08
本文导语: 我编写了一个多线程的spi通讯程序(与串口通讯类似),spi的默认打开方式为阻塞方式,工作方式为当spi接收不到数据时得到的应该全为 ffff……;但是当我将接收到的数据打印出来,发现只有一部分为ffff,剩下还有...
我编写了一个多线程的spi通讯程序(与串口通讯类似),spi的默认打开方式为阻塞方式,工作方式为当spi接收不到数据时得到的应该全为 ffff……;但是当我将接收到的数据打印出来,发现只有一部分为ffff,剩下还有一小部分数据为0.即spi的读操作没有结束,函数就已经返回了,就是说没能进行阻塞方式的读操作
为了对照,我编写了一个不用多线程的spi读写程序,发现现在就全部为ffff,没有数据为0了。因此我觉得可能是多线程程序中,不能进行阻塞的读写操作。
请问我现在想在多线程程序中让spi读写线程阻塞,应该如何做?还有多线程中如何更改系统默认分给某个线程的时间片?
为了对照,我编写了一个不用多线程的spi读写程序,发现现在就全部为ffff,没有数据为0了。因此我觉得可能是多线程程序中,不能进行阻塞的读写操作。
请问我现在想在多线程程序中让spi读写线程阻塞,应该如何做?还有多线程中如何更改系统默认分给某个线程的时间片?
|
线程读写是否 阻塞 是由驱动决定的。