This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] std::map - find()操作是否需要线程安全?

Guru**** 2587365 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1022641/std-map---does-find-operation-need-to-be-thread-safe

编译器版本- TI v18.12.1.LTS

CCS - 9.0.1.00004  

MAP 是否在 TI 编译器中以红-黑树的形式实现?

如果元素正在添加/删除到地图中,那么如果  同时执行,find()是否保证操作正确?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="391954" URL"~/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1022641/std-map---does-find-operation-need-to-be-thread-safe "] TI 编译器中是否以红-黑树的形式实现了地图?[/quot]

    是的

    [引用 userid="391954" URL"~/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1022641/std-map---does-find-operation-need-to-be-thread-safe "]如果要将元素添加/删除到地图中,find() 是否保证 同时执行操作正确?[/quot]

    假设您有两个不同的执行线程访问同一个映射容器。  我认为答案是否定的  但我会再向您介绍这方面的内容。

    谢谢、此致、

    乔治

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="391954" URL"~/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1022641/std-map---does-find-operation-need-to-be-thread-safe "]如果要将元素添加/删除到地图中,find() 是否保证 同时执行操作正确?[/quot]

    我可以确认答案是否定的

    谢谢、此致、

    乔治

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、George、

    感谢您的响应;根据我的理解、用于映射的插入操作不会修改现有元素的内存位置。 我认为删除可能会导致修改。 因此、插入和查找操作可以同时执行。 您可以确认吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这...

    [引用 userid="391954" URL"~/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1022641/std-map---does-find-operation-need-to-be-thread-safe/3780676 #3780676"]映射的插入操作不会修改现有元素的内存位置。

    (笑声) 不正确。  红色-黑色树是平衡二进制树的变体。  这意味着,当插入元素时,树可能会重新平衡。  虽然现有元素中的任何一个都不会更改位置、但这些元素中的指针确实会更改。  查找操作依赖于这些相同的指针。  我不确定如果同时运行查找和树平衡会发生什么情况。  它不能是很好。

    谢谢、此致、

    乔治

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的解释;我  不清楚您 的以下陈述;我将进一步深入探讨。 谢谢你。  

    [引用 userid="4373 " URL"~/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1022641/std-map---does-find-operation-need-to-be-thread-safe/3781278 #3781278"]这些元素内的指针会昌
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    红色-黑色树中的元素包含指针字段。  它们的名称与左右两侧相似。  它们都指向红-黑树的一个元素。 插入操作可能会导致树重新平衡。  如果是这样、则元素中的某些左右字段会更改值。  “查找”操作使用和右字段在树中导航。  如果两个操作同时发生、则可能会发生不良情况。

    谢谢、此致、

    乔治