From 02ace856c8bea046e38588823af968921619aad9 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Mon, 7 Jul 2025 23:12:47 +0800 Subject: [PATCH 1/2] Include namespace prefix in links --- docs/parallel/amp/reference/array-class.md | 2 +- docs/parallel/concrt/asynchronous-message-blocks.md | 4 ++-- docs/parallel/concrt/contexts.md | 4 ++-- .../concrt/how-to-send-a-message-at-a-regular-interval.md | 2 +- docs/parallel/concrt/parallel-algorithms.md | 6 +++--- docs/parallel/concrt/schedule-groups.md | 2 +- .../parallel/concrt/task-parallelism-concurrency-runtime.md | 4 ++-- .../concrt/walkthrough-creating-a-custom-message-block.md | 4 ++-- docs/parallel/concrt/walkthrough-implementing-futures.md | 2 +- 9 files changed, 15 insertions(+), 15 deletions(-) diff --git a/docs/parallel/amp/reference/array-class.md b/docs/parallel/amp/reference/array-class.md index e7a9eea52c..5fd455d1f1 100644 --- a/docs/parallel/amp/reference/array-class.md +++ b/docs/parallel/amp/reference/array-class.md @@ -51,7 +51,7 @@ The rank of the array. |Name|Description| |----------|-----------------| -|[`operator std::vector`](#operator_vec)|Uses `copy(*this, vector)` to implicitly convert the array to a std::[vector](../../../standard-library/vector-class.md) object.| +|[`operator std::vector`](#operator_vec)|Uses `copy(*this, vector)` to implicitly convert the array to a [std::vector](../../../standard-library/vector-class.md) object.| |[operator()](#operator_call)|Returns the element value that is specified by the parameters.| |[operator\[\]](#operator_at)|Returns the element that is at the specified index.| |[operator=](#operator_eq)|Copies the contents of the specified `array` object into this one.| diff --git a/docs/parallel/concrt/asynchronous-message-blocks.md b/docs/parallel/concrt/asynchronous-message-blocks.md index 54f4c8092f..14f3a67370 100644 --- a/docs/parallel/concrt/asynchronous-message-blocks.md +++ b/docs/parallel/concrt/asynchronous-message-blocks.md @@ -257,7 +257,7 @@ The [concurrency::join](../../parallel/concrt/reference/join-class.md) and [conc Reading from a `join` or `multitype_join` object resembles calling the Windows API function `WaitForMultipleObjects` when it has the `bWaitAll` parameter set to `TRUE`. However, just like a `choice` object, `join` and `multitype_join` objects use an event mechanism that binds data to the event itself instead of to an external synchronization object. -Reading from a `join` object produces a std::[vector](../../standard-library/vector-class.md) object. Reading from a `multitype_join` object produces a std::[tuple](../../standard-library/tuple-class.md) object. Elements appear in these objects in the same order as their corresponding source buffers are linked to the `join` or `multitype_join` object. Because the order in which you link source buffers to a `join` or `multitype_join` object is associated with the order of elements in the resulting `vector` or `tuple` object, we recommend that you do not unlink an existing source buffer from a join. Doing so can result in unspecified behavior. +Reading from a `join` object produces a [std::vector](../../standard-library/vector-class.md) object. Reading from a `multitype_join` object produces a [std::tuple](../../standard-library/tuple-class.md) object. Elements appear in these objects in the same order as their corresponding source buffers are linked to the `join` or `multitype_join` object. Because the order in which you link source buffers to a `join` or `multitype_join` object is associated with the order of elements in the resulting `vector` or `tuple` object, we recommend that you do not unlink an existing source buffer from a join. Doing so can result in unspecified behavior. ### Greedy Versus Non-Greedy Joins @@ -285,7 +285,7 @@ For complete examples that show how to use the `join` class, see [How to: Select ## timer Class -The concurrency::[timer class](../../parallel/concrt/reference/timer-class.md) acts as a message source. A `timer` object sends a message to a target after a specified period of time has elapsed. The `timer` class is useful when you must delay sending a message or you want to send a message at a regular interval. +The [concurrency::timer class](../../parallel/concrt/reference/timer-class.md) acts as a message source. A `timer` object sends a message to a target after a specified period of time has elapsed. The `timer` class is useful when you must delay sending a message or you want to send a message at a regular interval. The `timer` class sends its message to just one target. If you set the `_PTarget` parameter in the constructor to `NULL`, you can later specify the target by calling the [concurrency::ISource::link_target](reference/source-block-class.md#link_target) method. diff --git a/docs/parallel/concrt/contexts.md b/docs/parallel/concrt/contexts.md index 47042ab9ef..01840e36c4 100644 --- a/docs/parallel/concrt/contexts.md +++ b/docs/parallel/concrt/contexts.md @@ -7,7 +7,7 @@ ms.assetid: 10c1d861-8fbb-4ba0-b2ec-61876b11176e --- # Contexts -This document describes the role of contexts in the Concurrency Runtime. A thread that is attached to a scheduler is known as an *execution context*, or just *context*. The [concurrency::wait](reference/concurrency-namespace-functions.md#wait) function and the concurrency::[Context class](../../parallel/concrt/reference/context-class.md) enable you to control the behavior of contexts. Use the `wait` function to suspend the current context for a specified time. Use the `Context` class when you need more control over when contexts block, unblock, and yield, or when you want to oversubscribe the current context. +This document describes the role of contexts in the Concurrency Runtime. A thread that is attached to a scheduler is known as an *execution context*, or just *context*. The [concurrency::wait](reference/concurrency-namespace-functions.md#wait) function and the [concurrency::Context class](../../parallel/concrt/reference/context-class.md) enable you to control the behavior of contexts. Use the `wait` function to suspend the current context for a specified time. Use the `Context` class when you need more control over when contexts block, unblock, and yield, or when you want to oversubscribe the current context. > [!TIP] > The Concurrency Runtime provides a default scheduler, and therefore you are not required to create one in your application. Because the Task Scheduler helps you fine-tune the performance of your applications, we recommend that you start with the [Parallel Patterns Library (PPL)](../../parallel/concrt/parallel-patterns-library-ppl.md) or the [Asynchronous Agents Library](../../parallel/concrt/asynchronous-agents-library.md) if you are new to the Concurrency Runtime. @@ -24,7 +24,7 @@ For an example that uses the `wait` function to yield the current context, and t ## The Context Class -The concurrency::[Context class](../../parallel/concrt/reference/context-class.md) provides a programming abstraction for an execution context and offers two important features: the ability to cooperatively block, unblock, and yield the current context, and the ability to oversubscribe the current context. +The [concurrency::Context class](../../parallel/concrt/reference/context-class.md) provides a programming abstraction for an execution context and offers two important features: the ability to cooperatively block, unblock, and yield the current context, and the ability to oversubscribe the current context. ### Cooperative Blocking diff --git a/docs/parallel/concrt/how-to-send-a-message-at-a-regular-interval.md b/docs/parallel/concrt/how-to-send-a-message-at-a-regular-interval.md index 296c70f128..911ec3fb3b 100644 --- a/docs/parallel/concrt/how-to-send-a-message-at-a-regular-interval.md +++ b/docs/parallel/concrt/how-to-send-a-message-at-a-regular-interval.md @@ -7,7 +7,7 @@ ms.assetid: 4b60ea6c-97c8-4d69-9f7b-ad79f3548026 --- # How to: Send a Message at a Regular Interval -This example shows how to use the concurrency::[timer class](../../parallel/concrt/reference/timer-class.md) to send a message at a regular interval. +This example shows how to use the [concurrency::timer class](../../parallel/concrt/reference/timer-class.md) to send a message at a regular interval. ## Example diff --git a/docs/parallel/concrt/parallel-algorithms.md b/docs/parallel/concrt/parallel-algorithms.md index bf70d79533..26dfffe97f 100644 --- a/docs/parallel/concrt/parallel-algorithms.md +++ b/docs/parallel/concrt/parallel-algorithms.md @@ -144,7 +144,7 @@ You can use the `parallel transform` algorithm to perform many data parallelizat - Perform 3-D ray tracing, where each iteration refers to one pixel that must be rendered. -The following example shows the basic structure that is used to call the `parallel_transform` algorithm. This example negates each element of a std::[vector](../../standard-library/vector-class.md) object in two ways. The first way uses a lambda expression. The second way uses [std::negate](../../standard-library/negate-struct.md), which derives from [std::unary_function](../../standard-library/unary-function-struct.md). +The following example shows the basic structure that is used to call the `parallel_transform` algorithm. This example negates each element of a [std::vector](../../standard-library/vector-class.md) object in two ways. The first way uses a lambda expression. The second way uses [std::negate](../../standard-library/negate-struct.md), which derives from [std::unary_function](../../standard-library/unary-function-struct.md). [!code-cpp[concrt-basic-parallel-transform#1](../../parallel/concrt/codesnippet/cpp/parallel-algorithms_4.cpp)] @@ -207,7 +207,7 @@ Divides work into ranges such that each range has at least the number of iterati Divides work into a fixed number of ranges (typically the number of worker threads that are available to work on the loop). This partitioner type can improve performance because it does not use work-stealing and therefore has less overhead. Use this partitioner type when each iteration of a parallel loop performs a fixed and uniform amount of work and you do not require support for cancellation or forward cooperative blocking. > [!WARNING] -> The `parallel_for_each` and `parallel_transform` algorithms support only containers that use random access iterators (such as std::[vector](../../standard-library/vector-class.md)) for the static, simple, and affinity partitioners. The use of containers that use bidirectional and forward iterators produces a compile-time error. The default partitioner, `auto_partitioner`, supports all three of these iterator types. +> The `parallel_for_each` and `parallel_transform` algorithms support only containers that use random access iterators (such as [std::vector](../../standard-library/vector-class.md)) for the static, simple, and affinity partitioners. The use of containers that use bidirectional and forward iterators produces a compile-time error. The default partitioner, `auto_partitioner`, supports all three of these iterator types. Typically, these partitioners are used in the same way, except for `affinity_partitioner`. Most partitioner types do not maintain state and are not modified by the runtime. Therefore you can create these partitioner objects at the call site, as shown in the following example. @@ -263,7 +263,7 @@ This example shows how to provide a hash function to the `parallel_radixsort` al For illustration, this example uses a relatively small data set. You can increase the initial size of the vector to experiment with performance improvements over larger sets of data. -This example uses a lambda expression as the hash function. You can also use one of the built-in implementations of the std::[hash class](../../standard-library/hash-class.md) or define your own specialization. You can also use a custom hash function object, as shown in this example: +This example uses a lambda expression as the hash function. You can also use one of the built-in implementations of the [std::hash class](../../standard-library/hash-class.md) or define your own specialization. You can also use a custom hash function object, as shown in this example: [!code-cpp[concrt-parallel-sort-points#2](../../parallel/concrt/codesnippet/cpp/parallel-algorithms_13.cpp)]   diff --git a/docs/parallel/concrt/schedule-groups.md b/docs/parallel/concrt/schedule-groups.md index 72566cc711..210c4fd5c9 100644 --- a/docs/parallel/concrt/schedule-groups.md +++ b/docs/parallel/concrt/schedule-groups.md @@ -18,7 +18,7 @@ The `SchedulingProtocol` scheduler policy influences the order in which the sche The runtime uses the [concurrency::ScheduleGroup](../../parallel/concrt/reference/schedulegroup-class.md) class to represent schedule groups. To create a `ScheduleGroup` object, call the [concurrency::CurrentScheduler::CreateScheduleGroup](reference/currentscheduler-class.md#createschedulegroup) or [concurrency::Scheduler::CreateScheduleGroup](reference/scheduler-class.md#createschedulegroup) method. The runtime uses a reference-counting mechanism to control the lifetime of `ScheduleGroup` objects, just as it does with `Scheduler` objects. When you create a `ScheduleGroup` object, the runtime sets the reference counter to one. The [concurrency::ScheduleGroup::Reference](reference/schedulegroup-class.md#reference) method increments the reference counter by one. The [concurrency::ScheduleGroup::Release](reference/schedulegroup-class.md#release) method decrements the reference counter by one. -Many types in the Concurrency Runtime let you associate an object together with a schedule group. For example, the [concurrency::agent](../../parallel/concrt/reference/agent-class.md) class and message block classes such as [concurrency::unbounded_buffer](reference/unbounded-buffer-class.md), [concurrency::join](../../parallel/concrt/reference/join-class.md), and concurrency::[timer](reference/timer-class.md), provide overloaded versions of the constructor that take a `ScheduleGroup` object. The runtime uses the `Scheduler` object that is associated with this `ScheduleGroup` object to schedule the task. +Many types in the Concurrency Runtime let you associate an object together with a schedule group. For example, the [concurrency::agent](../../parallel/concrt/reference/agent-class.md) class and message block classes such as [concurrency::unbounded_buffer](reference/unbounded-buffer-class.md), [concurrency::join](../../parallel/concrt/reference/join-class.md), and [concurrency::timer](reference/timer-class.md), provide overloaded versions of the constructor that take a `ScheduleGroup` object. The runtime uses the `Scheduler` object that is associated with this `ScheduleGroup` object to schedule the task. You can also use the [concurrency::ScheduleGroup::ScheduleTask](reference/schedulegroup-class.md#scheduletask) method to schedule a lightweight task. For more information about lightweight tasks, see [Lightweight Tasks](../../parallel/concrt/lightweight-tasks.md). diff --git a/docs/parallel/concrt/task-parallelism-concurrency-runtime.md b/docs/parallel/concrt/task-parallelism-concurrency-runtime.md index 0f71bc66b1..fabf7eccbb 100644 --- a/docs/parallel/concrt/task-parallelism-concurrency-runtime.md +++ b/docs/parallel/concrt/task-parallelism-concurrency-runtime.md @@ -151,7 +151,7 @@ This section describes the [concurrency::when_all](reference/concurrency-namespa ### The when_all Function -The `when_all` function produces a task that completes after a set of tasks complete. This function returns a std::[vector](../../standard-library/vector-class.md) object that contains the result of each task in the set. The following basic example uses `when_all` to create a task that represents the completion of three other tasks. +The `when_all` function produces a task that completes after a set of tasks complete. This function returns a [std::vector](../../standard-library/vector-class.md) object that contains the result of each task in the set. The following basic example uses `when_all` to create a task that represents the completion of three other tasks. [!code-cpp[concrt-join-tasks#1](../../parallel/concrt/codesnippet/cpp/task-parallelism-concurrency-runtime_8.cpp)] @@ -270,7 +270,7 @@ Unstructured task groups and structured task groups work with task handles in di [!code-cpp[concrt-make-task-structure#1](../../parallel/concrt/codesnippet/cpp/task-parallelism-concurrency-runtime_16.cpp)] -To manage task handles for cases where you have a variable number of tasks, use a stack-allocation routine such as [_malloca](../../c-runtime-library/reference/malloca.md) or a container class, such as std::[vector](../../standard-library/vector-class.md). +To manage task handles for cases where you have a variable number of tasks, use a stack-allocation routine such as [_malloca](../../c-runtime-library/reference/malloca.md) or a container class, such as [std::vector](../../standard-library/vector-class.md). Both `task_group` and `structured_task_group` support cancellation. For more information about cancellation, see [Cancellation in the PPL](cancellation-in-the-ppl.md). diff --git a/docs/parallel/concrt/walkthrough-creating-a-custom-message-block.md b/docs/parallel/concrt/walkthrough-creating-a-custom-message-block.md index debf678980..9c9eed901c 100644 --- a/docs/parallel/concrt/walkthrough-creating-a-custom-message-block.md +++ b/docs/parallel/concrt/walkthrough-creating-a-custom-message-block.md @@ -57,7 +57,7 @@ The runtime calls the `propagate_message` method to asynchronously transfer a me The `priority_buffer` class is a custom message block type that orders incoming messages first by priority, and then by the order in which messages are received. The `priority_buffer` class resembles the [concurrency::unbounded_buffer](reference/unbounded-buffer-class.md) class because it holds a queue of messages, and also because it acts as both a source and a target message block and can have both multiple sources and multiple targets. However, `unbounded_buffer` bases message propagation only on the order in which it receives messages from its sources. -The `priority_buffer` class receives messages of type std::[tuple](../../standard-library/tuple-class.md) that contain `PriorityType` and `Type` elements. `PriorityType` refers to the type that holds the priority of each message; `Type` refers to the data portion of the message. The `priority_buffer` class sends messages of type `Type`. The `priority_buffer` class also manages two message queues: a [std::priority_queue](../../standard-library/priority-queue-class.md) object for incoming messages and a std::[queue](../../standard-library/queue-class.md) object for outgoing messages. Ordering messages by priority is useful when a `priority_buffer` object receives multiple messages simultaneously or when it receives multiple messages before any messages are read by consumers. +The `priority_buffer` class receives messages of type [std::tuple](../../standard-library/tuple-class.md) that contain `PriorityType` and `Type` elements. `PriorityType` refers to the type that holds the priority of each message; `Type` refers to the data portion of the message. The `priority_buffer` class sends messages of type `Type`. The `priority_buffer` class also manages two message queues: a [std::priority_queue](../../standard-library/priority-queue-class.md) object for incoming messages and a [std::queue](../../standard-library/queue-class.md) object for outgoing messages. Ordering messages by priority is useful when a `priority_buffer` object receives multiple messages simultaneously or when it receives multiple messages before any messages are read by consumers. In addition to the seven methods that a class that derives from `propagator_block` must implement, the `priority_buffer` class also overrides the `link_target_notification` and `send_message` methods. The `priority_buffer` class also defines two public helper methods, `enqueue` and `dequeue`, and a private helper method, `propagate_priority_order`. @@ -71,7 +71,7 @@ The following procedure describes how to implement the `priority_buffer` class. [!code-cpp[concrt-priority-buffer#1](../../parallel/concrt/codesnippet/cpp/walkthrough-creating-a-custom-message-block_2.h)] -1. In the `std` namespace, define specializations of [std::less](../../standard-library/less-struct.md) and [std::greater](../../standard-library/greater-struct.md) that act on concurrency::[message](../../parallel/concrt/reference/message-class.md) objects. +1. In the `std` namespace, define specializations of [std::less](../../standard-library/less-struct.md) and [std::greater](../../standard-library/greater-struct.md) that act on [concurrency::message](../../parallel/concrt/reference/message-class.md) objects. [!code-cpp[concrt-priority-buffer#2](../../parallel/concrt/codesnippet/cpp/walkthrough-creating-a-custom-message-block_3.h)] diff --git a/docs/parallel/concrt/walkthrough-implementing-futures.md b/docs/parallel/concrt/walkthrough-implementing-futures.md index 0eeeb8f2e6..07658394f8 100644 --- a/docs/parallel/concrt/walkthrough-implementing-futures.md +++ b/docs/parallel/concrt/walkthrough-implementing-futures.md @@ -42,7 +42,7 @@ To implement futures, this topic defines the `async_future` class. The `async_fu ### Description -The following example shows the complete `async_future` class and an example of its usage. The `wmain` function creates a std::[vector](../../standard-library/vector-class.md) object that contains 10,000 random integer values. It then uses `async_future` objects to find the smallest and largest values that are contained in the `vector` object. +The following example shows the complete `async_future` class and an example of its usage. The `wmain` function creates a [std::vector](../../standard-library/vector-class.md) object that contains 10,000 random integer values. It then uses `async_future` objects to find the smallest and largest values that are contained in the `vector` object. ### Code From e58598439f3d28017b03e929bbff04d7684efecf Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Mon, 7 Jul 2025 23:15:58 +0800 Subject: [PATCH 2/2] Update metadata for some ConcRT topics --- docs/parallel/concrt/asynchronous-message-blocks.md | 5 ++--- docs/parallel/concrt/contexts.md | 5 ++--- .../concrt/how-to-send-a-message-at-a-regular-interval.md | 5 ++--- docs/parallel/concrt/parallel-algorithms.md | 5 ++--- docs/parallel/concrt/schedule-groups.md | 5 ++--- docs/parallel/concrt/task-parallelism-concurrency-runtime.md | 5 ++--- .../concrt/walkthrough-creating-a-custom-message-block.md | 5 ++--- docs/parallel/concrt/walkthrough-implementing-futures.md | 5 ++--- 8 files changed, 16 insertions(+), 24 deletions(-) diff --git a/docs/parallel/concrt/asynchronous-message-blocks.md b/docs/parallel/concrt/asynchronous-message-blocks.md index 14f3a67370..dbbe11f411 100644 --- a/docs/parallel/concrt/asynchronous-message-blocks.md +++ b/docs/parallel/concrt/asynchronous-message-blocks.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: Asynchronous Message Blocks" title: "Asynchronous Message Blocks" -ms.date: "11/04/2016" +description: "Learn more about: Asynchronous Message Blocks" +ms.date: 11/04/2016 helpviewer_keywords: ["non-greedy join [Concurrency Runtime]", "asynchronous message blocks", "greedy join [Concurrency Runtime]"] -ms.assetid: 79c456c0-1692-480c-bb67-98f2434c1252 --- # Asynchronous Message Blocks diff --git a/docs/parallel/concrt/contexts.md b/docs/parallel/concrt/contexts.md index 01840e36c4..371b1142c8 100644 --- a/docs/parallel/concrt/contexts.md +++ b/docs/parallel/concrt/contexts.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: Contexts" title: "Contexts" -ms.date: "11/04/2016" +description: "Learn more about: Contexts" +ms.date: 11/04/2016 helpviewer_keywords: ["contexts [Concurrency Runtime]"] -ms.assetid: 10c1d861-8fbb-4ba0-b2ec-61876b11176e --- # Contexts diff --git a/docs/parallel/concrt/how-to-send-a-message-at-a-regular-interval.md b/docs/parallel/concrt/how-to-send-a-message-at-a-regular-interval.md index 911ec3fb3b..b1eca2fb42 100644 --- a/docs/parallel/concrt/how-to-send-a-message-at-a-regular-interval.md +++ b/docs/parallel/concrt/how-to-send-a-message-at-a-regular-interval.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: How to: Send a Message at a Regular Interval" title: "How to: Send a Message at a Regular Interval" -ms.date: "11/04/2016" +description: "Learn more about: How to: Send a Message at a Regular Interval" +ms.date: 11/04/2016 helpviewer_keywords: ["timer class, example", "sending messages at regular intervals [Concurrency Runtime]"] -ms.assetid: 4b60ea6c-97c8-4d69-9f7b-ad79f3548026 --- # How to: Send a Message at a Regular Interval diff --git a/docs/parallel/concrt/parallel-algorithms.md b/docs/parallel/concrt/parallel-algorithms.md index 26dfffe97f..8fb96cb02d 100644 --- a/docs/parallel/concrt/parallel-algorithms.md +++ b/docs/parallel/concrt/parallel-algorithms.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: Parallel Algorithms" title: "Parallel Algorithms" -ms.date: "11/19/2018" +description: "Learn more about: Parallel Algorithms" +ms.date: 11/19/2018 helpviewer_keywords: ["parallel algorithms [Concurrency Runtime]"] -ms.assetid: 045dca7b-4d73-4558-a44c-383b88a28473 ms.topic: how-to --- # Parallel Algorithms diff --git a/docs/parallel/concrt/schedule-groups.md b/docs/parallel/concrt/schedule-groups.md index 210c4fd5c9..b50caaa599 100644 --- a/docs/parallel/concrt/schedule-groups.md +++ b/docs/parallel/concrt/schedule-groups.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: Schedule Groups" title: "Schedule Groups" -ms.date: "11/04/2016" +description: "Learn more about: Schedule Groups" +ms.date: 11/04/2016 helpviewer_keywords: ["schedule groups"] -ms.assetid: 03523572-5891-4d17-89ce-fa795605f28b --- # Schedule Groups diff --git a/docs/parallel/concrt/task-parallelism-concurrency-runtime.md b/docs/parallel/concrt/task-parallelism-concurrency-runtime.md index fabf7eccbb..23e2ad4573 100644 --- a/docs/parallel/concrt/task-parallelism-concurrency-runtime.md +++ b/docs/parallel/concrt/task-parallelism-concurrency-runtime.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: Task Parallelism (Concurrency Runtime)" title: "Task Parallelism (Concurrency Runtime)" -ms.date: "11/04/2016" +description: "Learn more about: Task Parallelism (Concurrency Runtime)" +ms.date: 11/04/2016 helpviewer_keywords: ["structured task groups [Concurrency Runtime]", "structured tasks [Concurrency Runtime]", "task groups [Concurrency Runtime]", "task parallelism", "tasks [Concurrency Runtime]"] -ms.assetid: 42f05ac3-2098-494a-ba84-737fcdcad077 ms.topic: how-to --- # Task Parallelism (Concurrency Runtime) diff --git a/docs/parallel/concrt/walkthrough-creating-a-custom-message-block.md b/docs/parallel/concrt/walkthrough-creating-a-custom-message-block.md index 9c9eed901c..c34f0946a6 100644 --- a/docs/parallel/concrt/walkthrough-creating-a-custom-message-block.md +++ b/docs/parallel/concrt/walkthrough-creating-a-custom-message-block.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: Walkthrough: Creating a Custom Message Block" title: "Walkthrough: Creating a Custom Message Block" -ms.date: "04/25/2019" +description: "Learn more about: Walkthrough: Creating a Custom Message Block" +ms.date: 04/25/2019 helpviewer_keywords: ["creating custom message blocks Concurrency Runtime]", "custom message blocks, creating [Concurrency Runtime]"] -ms.assetid: 4c6477ad-613c-4cac-8e94-2c9e63cd43a1 --- # Walkthrough: Creating a Custom Message Block diff --git a/docs/parallel/concrt/walkthrough-implementing-futures.md b/docs/parallel/concrt/walkthrough-implementing-futures.md index 07658394f8..0634c431d4 100644 --- a/docs/parallel/concrt/walkthrough-implementing-futures.md +++ b/docs/parallel/concrt/walkthrough-implementing-futures.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: Walkthrough: Implementing Futures" title: "Walkthrough: Implementing Futures" -ms.date: "04/25/2019" +description: "Learn more about: Walkthrough: Implementing Futures" +ms.date: 04/25/2019 helpviewer_keywords: ["implementing futures [Concurrency Runtime]", "futures, implementing [Concurrency Runtime]"] -ms.assetid: 82ea75cc-aaec-4452-b10d-8abce0a87e5b --- # Walkthrough: Implementing Futures