当前位置: 技术问答>linux和unix
[内核并发]并发数据的处理
来源: 互联网 发布时间:2016-08-02
本文导语: 想提高内核的处理能力,具体如下所示: A -> ->A' B -> -> D -> ->B' C -> ->C' 如上图所示,并发线程A,B,C,处理完数据后全部交给D处理,D完成任务后,将处理...
想提高内核的处理能力,具体如下所示:
A -> ->A'
B -> -> D -> ->B'
C -> ->C'
如上图所示,并发线程A,B,C,处理完数据后全部交给D处理,D完成任务后,将处理后的数据分别返还给A,B,C线程继续处理。
求助,在内核中采用什么机制可以实现该方案,保证A,B,C的并发进行。
A -> ->A'
B -> -> D -> ->B'
C -> ->C'
如上图所示,并发线程A,B,C,处理完数据后全部交给D处理,D完成任务后,将处理后的数据分别返还给A,B,C线程继续处理。
求助,在内核中采用什么机制可以实现该方案,保证A,B,C的并发进行。
|
跟数据buffer的设计思想有关。例如 buffer_A, buffer_B, buffer_C三个,那对于D处理就好办多了,连锁都不用加。
|
ABC线程的并行不用你操心
处理完数据后全部交给D处理,D完成任务后,将处理后的数据分别返还给A,B,C线程继续处理
------------
使用用户空间的锁和信号灯集就行了
不用你深入内核去
处理完数据后全部交给D处理,D完成任务后,将处理后的数据分别返还给A,B,C线程继续处理
------------
使用用户空间的锁和信号灯集就行了
不用你深入内核去
|
看你的描述有点像多核下,多核下保护我认为最关键的应该是数据,根据数据的读写特点(读多于写、只写只读等等),多核下有spinlock、RCU、wrlock锁。
如果是单核的话就是多线程可以使用up/down。
用户态如果是线程间的使用pthread_metux,如果是进程间的需要使用IPC的信号灯
如果是单核的话就是多线程可以使用up/down。
用户态如果是线程间的使用pthread_metux,如果是进程间的需要使用IPC的信号灯
|
|
单核的并发是假的, 且增加程序的复杂性, kernel的程序越简单越好,可以放应用层去做, 自动并发了。