关于网友提出的“ linux 多线程编程, 实现多线程之间的 链表操作”问题疑问,本网通过在网上对“ linux 多线程编程, 实现多线程之间的 链表操作”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: linux 多线程编程, 实现多线程之间的 链表操作
描述:多线程链表linuxmalloc
问题1: 线程在添加链表节点的时候, 使用 malloc 动态创建空间, 这个空间地址是 所有线程共享的,还是 各自线程 独立的,如果是独立的 ,就不能共享 链表的数据了。
问题2:如果是共享的,我一个提供者A线程 不断的向 链表中添加 节点数据, 同时提供者A自己实时打印节点数据, 消费者B线程 同时也不断的在读链表中的节点数据打印, 但是两个打印的结果不同,同一地址上的数据不一样,是我互斥没做好导致的数据改变了吗?
求大神指导
解决方案1: 同步要保证:
读数据的时候不要写,写数据的时候不要读,同时读一般不会有问题
如果没有使用读写同步的三个线程,一个写,两个读,两个读的线程读出的数据有可能不完全一样
解决方案2: 你的问题2已经回答了你的问题1.至于为啥没有同步,肯定是同步没做好,线程的执行顺序默认是操作系统决定的了。
以上介绍了“ linux 多线程编程, 实现多线程之间的 链表操作”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/3110506.html