Boost C++ Libraries Home Libraries People FAQ More

PrevUpHome

C++1z TS Concurrency - On going proposals

C++ Latches and Barriers
C++ Concurrent Queues
Executors and Schedulers

Table 1.6. C++ Latches and Barriers Conformance

Section

Description

Status

Comments

X.1

Class latch

Partial

A new class latch has been added. The interface is a super set of the one of the proposal, taking some of the functions of the class barrier.

X.2

Class barrier

No

Even if Boost.Thread has a class boost:barrier it doesn't provides the same kind of services. There is an experimental completion_latch that could be used instead.


Table 1.7. C++ Concurrent Queues Conformance

Section

Description

Status

Comments

X.1

Conceptual interface

Partial

The interface provided has some differences respect to this proposal. All the functions having a queue_op_status are not provided. No lock-free concrete classes

X.1.1

Basic Operations

Partial

-

X.1.1.1

push

yes

renamed push_back.

X.1.1.2

value_pop

no

renamed pull_front with two flavors.

X.1.2

Non-waiting operations

-

-

X.1.2.1

try_push

yes

renamed try_push_back

X.1.2.2

try_pop

yes

renamed try_pull_back

X.1.3

Non-blocking operations

-

-

X.1.3.1

nonblocking_push

Yes

renamed nonblocking_push_back

X.1.3.2

nonblocking_pop

Yes

renamed nonblocking_pull_front

X.1.4

Push-front operations

No

-

X.1.5

Closed queues

Partial

-

X.1.5.1

close

Yes

-

X.1.5.2

is_closed

Yes

renamed closed

X.1.5.3

wait_push

Yes

renamed wait_push_back

X.1.5.4

wait_pop

Yes

renamed wait_pull_front

X.1.5.5

wait_push_front

no

-

X.1.5.6

wait_pop_back

no

-

X.1.5.6

open

no

-

X.1.6

Empty and Full Queues

Yes

-

X.1.6.1

is_empty

Yes

-

X.1.6.2

is_full

Yes

Added capacity

X.1.7

Queue Names

No

Not considered a must for the time been.

X.1.8

Element Type Requirements

Yes?

-

X.1.9

Exception Handling

Yes?

-

X.1.10

Queue Ordering

Yes?

-

X.1.11

Lock-Free Implementations

No

waiting to stabilize the lock-based interface. Will use Boost.LockFree once it is Boost.Move aware.

X.2

Concrete queues

Partial

-

X.2.1

Locking Buffer Queue

Partial

classes sync_queue and a sync_bounded_queue.

X.2.1

Lock-Free Buffer Queue

No

waiting to stabilize the lock-based interface. Will use Boost.LockFree once it is Boost.Move aware.

X.3

Additional Conceptual Tools

No

-

X.3.1

Fronts and Backs

No

-

X.3.2

Streaming Iterators

No

-

X.3.3

Storage Iterators

No

-

X.3.4

Binary Interfaces

No

-

X.3.4

Managed Indirection

No

-


Table 1.8. Executors and Schedulers

Section

Description

Status

Comments

V.1.1

Class executor

Yes

-

V.1.1

add

Yes

renamed with a function template submit

V.1.1

num_of_pendin_closures

No

V.1.2

Class sceduled_executor

No

-

V.1.2

add_at

No

renamed with a function template scheduler::submit_at

V.1.2

add_after

No

renamed with a function template scheduler::submit_after

V.2

Concrete executor classes

No

-

V.2.1

thread_pool

Yes

static version basic_thread_pool, dynamic one execduler_adaptor<basic_thread_pool>

V.2.2

serial_executor

yes

-

V.2.3

loop_executor

Yes

static version loop_scheduler, dynamic one execduler_adaptor<loop_scheduler>

V.2.4

inline_executor

Yes

static version inline_executor, dynamic one execduler_adaptor<inline_executor>

V.2.5

thread_executor

Yes

static version thread_executor, dynamic one execduler_adaptor<thread_executor>


Table 1.9. `async, future/shared_future::then`and Executors

Section

Description

Status

Comments

30.6.6

future<T>::then

Yes

30.6.7

shared_future<T>::then

Yes

30.6.8

async

Yes

-


Table 1.10. Executors and Schedulers - revision 4

Section

Description

Status

Comments

VI.A

Executor Concept

Yes

wrapper_type renamed by work and spawn by submit ]] [[VI.A.1] [thread_per_task_executor

Yes

renamed thread_executor

VI.A.2

thread_pool_executor

Yes

renamed basic_thread_pool

VI.A.3

system_executor

No

-

VI.A.4

loop_executor

Yes

-

VI.A.5

serial_executor

yes

-

VI.B

executor_ref

yes

-

VI.C

executor

yes

renamed gen_executor_ref

VI.D

Free Functions and Helper Objects

partial

-

VI.D

make_package

No

-

VI.D

spawn_future

No

async(Ex&, ...) is similar but returns a blocking future.

VI.D

spawn

No

-

VI.D

task_wrapper

No

renamed resubmitter

VI.D

set_executor

No

renamed resubmit

VI.D

function_wrapper

Partial

renamed work



PrevUpHome