微软基于 Intel 的库建议这个并发库有啥意义?
Posted
技术标签:
【中文标题】微软基于 Intel 的库建议这个并发库有啥意义?【英文标题】:What are the implications of suggesting this concurrency library by Microsoft based on Intel's Library?微软基于 Intel 的库建议这个并发库有什么意义? 【发布时间】:2020-07-18 17:25:36 【问题描述】:我使用的是英特尔架构的 Windows 平台。我使用 Visual Studio 2017 作为我的 IDE。我正在为另一个问题编写编码示例。它涉及容器、多线程和并行编程的使用。我所指的 Q/A 可以在 here 找到。在我发布任何内容以提出建议或向 OP 提供任何类型的反馈之前,我想首先确保它既有用又准确。
在构建我自己的版本或他们提供的应用程序的模型时,我遇到了一些文档并发现了一些 Visual Studio 通过 Intellisense 或 Autocomplete 提供给我的头文件...这里是一些头文件的列表有问题的文件:
#include <concurrent_priority_queue.h>
#include <concurrent_queue.h>
#include <concurrent_unordered_map.h>
#include <concurrent_unordered_set.h>
#include <concurrent_vector>
#include <internal_concurrent_hash.h>
当我对这些头文件进行更多研究时,我从 Microsoft Docs 中获得了有关它们的详细信息。但是,我也看到了对 Intel 的 tbb
库的引用。
打开其中一个文件后,它会向我提供以下信息:
/***
* ==++==
*
* Copyright (c) Microsoft Corporation. All rights reserved.
* Microsoft would like to acknowledge that this concurrency data structure implementation
* is based on the Intel implementation of its Threading Building Blocks ("Intel Material").
*
* ==--==
* =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
*
* concurrent_vector.h
*
* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
****/
/*
Intel Material Copyright 2005-2008 Intel Corporation. All Rights Reserved.
*/
它们似乎是基于英特尔并发库模型的 Mircosoft 版本。
现在,如果这是专门针对英特尔的库,那么我会假设它可以跨英特尔系列架构进行移植,与其操作系统无关......但是,如果这是微软的版本,那么这将是微软还是平台-具体的?出于并发原因建议使用此库是否可取?如果没有,是否有另一个具有类似行为的通用可移植库作为可行的替代品?
我不想建议在他们的环境中可能无法使用的东西。我目前在设计过程中处于停滞状态,以提供一个可能有用的建议。这是我需要更清楚的地方。
【问题讨论】:
MSVC 支持的每个平台都支持微软的并发运行时。 @DavidHaim 那里有一些有用的信息......所以,如果他们在运行 Linux 或 Mac 并且没有 MSVC 的 AMD、ARM 或 RiscV 机器上......那么它不会对他们来说是便携的。所以这让我认为它在很多情况下都是可移植的,但不是全部。因此,如果他们针对这些平台,我可以建议将其作为一个可行的选择,否则建议使用类似的替代库……但是,如果有人在 AMD 上运行 Linux,但能够安装 MSVC,那么它仍然是可移植的。 . @FrancisCugler Microsoft Visual Studio Code 只是一个编辑器,而不是编译器。 MSVC 通常是 C/C++ 编译器。 这是微软的PPL;它已多年未更新,MS 员工已表示打算在下一个或两个 VS 版本中弃用它。避开它,继续前进。 是的,如果许可/潜在成本对您来说不是问题,那么从技术角度来看,TBB 无疑更胜一筹。也就是说,它也是一个大型且固执己见的库,通常我只需<atomic>
+ Boost.Lockfree 就可以逃脱。不可能说别人“应该选择”什么。 ;-]
【参考方案1】:
您正在查看Microsoft's Parallel Patterns Library (PPL)。
如果您关心可移植性,我建议您改用Intel's Threading Building Blocks (TBB)。如果您担心的话,它不仅限于英特尔处理器。
【讨论】:
以上是关于微软基于 Intel 的库建议这个并发库有啥意义?的主要内容,如果未能解决你的问题,请参考以下文章
OpenCV 中的 vc10、vc11 和 vc12 库有啥区别?