Modify

Ticket #6266 (closed Feature Requests: fixed)

Opened 2 years ago

Last modified 23 months ago

c++11 compliance: thread destructor should call terminate if joinable

Reported by: viboes Owned by: viboes
Milestone: Boost 1.50.0 Component: thread
Version: Boost 1.48.0 Severity: Problem
Keywords: c++11 compliance thread dtor V2 Cc:

Description

In order to be standard compliant the thread destructor should call terminate if joinable instead of detaching the thread.

"30.3.1.3 thread destructor [thread.thread.destr]

~thread();

If joinable() then terminate(), otherwise no effects. [Note: Either implicitly detaching or joining a joinable() thread in its destructor could result in difficult to debug correctness (for detach) or performance (for join) bugs encountered only when an exception is raised. Thus the programmer must ensure that the destructor is never executed while the thread is still joinable. — end note ]"

This behavior is incompatible with the current version, so it shall be activated by a specific define, i.e., BOOST_THREAD_VERSION=2.

Attachments

6266.patch Download (9.5 KB) - added by viboes 2 years ago.

Change History

comment:1 Changed 2 years ago by viboes

  • Summary changed from c++11 complicance: thread destructor should call terminate if joinable to c++11 compliance: thread destructor should call terminate if joinable

comment:2 Changed 2 years ago by viboes

  • Owner changed from anthonyw to viboes
  • Status changed from new to assigned

Changed 2 years ago by viboes

comment:3 Changed 2 years ago by viboes

  • Milestone changed from To Be Determined to Boost 1.50.0

The previous patch contains the modifications for #6269 also.

Committed revision [77718].

comment:4 Changed 23 months ago by viboes

  • Status changed from assigned to closed
  • Resolution set to fixed

Committed in release branch at [78543]

View

Add a comment

Modify Ticket

Change Properties
<Author field>
Action
as closed
The resolution will be deleted. Next status will be 'reopened'
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.