我对多线程的概念相当陌生,并且为了获得更好的想法正在探索一些有趣的问题。我们如何在使用链表时使用多线程
我的一个朋友建议如下:
“这是相当直接的有一个链接列表,并做定期插入,搜索和删除操作,但你会如何,如果多个线程执行这些操作。需要在同一个列表上工作 最少需要多少个锁,我们需要多少个锁来优化链表功能?
给我一些想法,我觉得一个锁应该足以应付。我们获取每个读写操作的锁定。我的意思是,当我们访问列表中的一个节点数据时,我们获得了锁。当我们插入/删除元素时,我们获取整个系列步骤的锁定。
但是我无法想象使用更多锁的方式会给我们更多的优化性能。
任何帮助/指针?
每个节点的锁,例如? –
@JoeZ:是的,这是一个常见的实现,并且通常会导致* hand over hand *遍历。 –
感谢您的回复。目前我正在使用单个链接列表实现一个实现。我假设像'temp = temp-> next;'这样的操作也将被视为已读并且需要锁。 – Akshya11235