当前位置: 技术问答>linux和unix
请教:linux多线程同步问题
来源: 互联网 发布时间:2016-08-20
本文导语: 本帖最后由 StarOfFuture 于 2010-04-18 20:03:15 编辑 linux下如何对一个缓冲区进行读写控制呢?我有两个线程,一个读缓冲区,一个写缓冲区。下面是一个程序的大致流程: write() { for(; ; ) writedata(buffer); } ...
write()
{
for(; ; )
writedata(buffer);
}
read()
{
for( ; ; )
data = getdata(buffer);
}
main()
{
pthread_create(thread1,NULL,(void*)write);
pthread_create(thread2,NULL,(void*)read);
}
如何实现这两个线程的互斥访问呢?读线程只有在写完数据后才能获取数据,写线程只能在读完数据才能再写数据,也就是两个线程交替运行。我的想法是用一个互斥锁,不知道能解决问题吗?望各位指点一下!
|
write()
{
for(; ; )
{
sem_wait(semaphore);
writedata(buffer);
sem_post(semaphore);
}
}
read()
{
for( ; ; )
{
sem_wait(semaphore);
data = getdata(buffer);
sem_post(semaphore);
}
}
不知道这样能不能满足你要求;
|
线程之间可以用mutex