如何解决实现“线程安全\\”链接列表
| 我正在写一个应用程序,其中线程之间共享一个以上的链接列表。链表上的操作照常:搜索,插入,删除,修改节点内容。 我遇到了一个实现,以保持链接列表操作“线程安全”的整个过程。 http://www.cs.cf.ac.uk/Dave/C/node31.html#SECTION003100000000000000000 但是想知道我是否可以按照以下步骤进行:lock(mutex)
link list operation
unlock(mutex)
即我将互斥锁与每个链接列表相关联,并在每次开始操作时如上使用
会很感激的意见
解决方法
要看。如果您的线程主要在列表中搜索而不修改它们,则可能有必要实现读取器/写入器锁。只要没有其他线程修改该信息,就没有理由阻止其他线程读取该信息。但是,如果最常见的操作涉及修改列表或列表中的信息,则可能没有太多收获,因此,简单的锁定/执行操作/解锁方案也应同样有效。
, 可以这样做,但是您却牺牲了活力,因为链接列表现在一次只能被一个线程触及-这可能导致列表成为程序中的瓶颈。
考虑一下链表的接口(线程可以调用哪些方法)以及如何确保链表的安全,同时还允许尽可能多的线程一次使用它。
例如,如果您将列表用作队列,则一个线程可能将项目排在列表的末尾,而另一个线程使项目出队。
创建线程安全实用程序面临很多挑战,但是您应该尝试尽可能地外科手术,以确保不会牺牲首先要对软件进行并行化来获得的性能!玩得开心!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。