最近在用qt的多线程,其实本质就是pv原语的api实现。比如qmutex,qsemaphore等等。
1.多线程资源互斥问题
(同一时间只能一个访问资源,其他等待)
thread 1~n:
p(mutex);
资源操作1~n;
v(mutex);
2.单一生产者消费者同步问题
(同一时间单个生产者生产,或者单一消费者消费,缓冲数量为n)
empty=n,full=0;
producer1:
p(empty);
p(mutex);
生产;
v(mutex);
v(full);
consumer1:
p(full);
p(mutex);
消费;
v(mutex);
v(empty);
3.多读者多写者问题
(同一个资源,同一时间没有写时可以多个读者同时读,如果写者要写则不能有读者读,同一时间最多一个写者在写)
reader1~N:
p(readerLicense);
读;
v(readerLicense);
writer1~M:
p(mutex);
for(1~N) p(readerLicense);
写;
for(1~N) v(readerLicense);
v(mutex);
173万+

被折叠的 条评论
为什么被折叠?



