当前位置: 技术问答>linux和unix
关于Linux多线程互斥共享资源
来源: 互联网 发布时间:2016-04-12
本文导语: 我现在要解决一个USB口占用和冲突的问题,我用了一个死循环来从控制端口发送请求数据的命令(写),然后通过数据端口来接收设备发送过来的数据(读),写一次读到一桢图像数据,我用了一个死循环来不停的写...
我现在要解决一个USB口占用和冲突的问题,我用了一个死循环来从控制端口发送请求数据的命令(写),然后通过数据端口来接收设备发送过来的数据(读),写一次读到一桢图像数据,我用了一个死循环来不停的写和读,这样我就可以不停的接收图像数据并显示,这样for(;;){write; read; display;}
而我现在还要在显示图像(即要不停的写和读,而写必须要用控制端口)的同时,通过控制端口发送其它控制命令,如读图像的各种参数给USB设备,设备从这个控制端口再给我回数据,这样{send; recv;}用一个按钮来实现,send要用到控制端口,这样按按钮的时候控制端口有时就会冲突和卡死,请问各位大虾,我这里是不是涉及到了资源的共享,这里在按按钮的时候要停止那个图像数据的传输吗,是的话该怎么实现呢?用信号量?还是互斥锁?想到用这些,但是具体不知道怎么用,请各位大虾指点。
而我现在还要在显示图像(即要不停的写和读,而写必须要用控制端口)的同时,通过控制端口发送其它控制命令,如读图像的各种参数给USB设备,设备从这个控制端口再给我回数据,这样{send; recv;}用一个按钮来实现,send要用到控制端口,这样按按钮的时候控制端口有时就会冲突和卡死,请问各位大虾,我这里是不是涉及到了资源的共享,这里在按按钮的时候要停止那个图像数据的传输吗,是的话该怎么实现呢?用信号量?还是互斥锁?想到用这些,但是具体不知道怎么用,请各位大虾指点。
|
看不大懂你的问题.
不过看来起来, 控制端口和数据端口是两个不同东西, 而其你顺序来的,应该不会涉及资源冲突的问题.是不是你的 USB driver不是很稳定?
不过看来起来, 控制端口和数据端口是两个不同东西, 而其你顺序来的,应该不会涉及资源冲突的问题.是不是你的 USB driver不是很稳定?
|
用锁,大概思路是原子操作:
send_and_read(...)
{
lock();
send();
read();
unlock();
}
send_and_read(...)
{
lock();
send();
read();
unlock();
}
|
知道用锁用信号量了,就去google锁和信号量的用法呀
|
mfd = open("/tmp/myapp", O_WRONLY|O_CREAT);
if(mfd
if(mfd