<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Issue 1515: packaged_task::make_ready_at_thread_exit has no synchronization requirements</title>
<meta property="og:title" content="Issue 1515: packaged_task::make_ready_at_thread_exit has no synchronization requirements">
<meta property="og:description" content="C++ library issue. Status: Resolved">
<meta property="og:url" content="https://cplusplus.github.io/LWG/issue1515.html">
<meta property="og:type" content="website">
<meta property="og:image" content="http://cplusplus.github.io/LWG/images/cpp_logo.png">
<meta property="og:image:alt" content="C++ logo">
<style>
  p {text-align:justify}
  li {text-align:justify}
  pre code.backtick::before { content: "`" }
  pre code.backtick::after { content: "`" }
  blockquote.note
  {
    background-color:#E0E0E0;
    padding-left: 15px;
    padding-right: 15px;
    padding-top: 1px;
    padding-bottom: 1px;
  }
  ins {background-color:#A0FFA0}
  del {background-color:#FFA0A0}
  table.issues-index { border: 1px solid; border-collapse: collapse; }
  table.issues-index th { text-align: center; padding: 4px; border: 1px solid; }
  table.issues-index td { padding: 4px; border: 1px solid; }
  table.issues-index td:nth-child(1) { text-align: right; }
  table.issues-index td:nth-child(2) { text-align: left; }
  table.issues-index td:nth-child(3) { text-align: left; }
  table.issues-index td:nth-child(4) { text-align: left; }
  table.issues-index td:nth-child(5) { text-align: center; }
  table.issues-index td:nth-child(6) { text-align: center; }
  table.issues-index td:nth-child(7) { text-align: left; }
  table.issues-index td:nth-child(5) span.no-pr { color: red; }
  @media (prefers-color-scheme: dark) {
     html {
        color: #ddd;
        background-color: black;
     }
     ins {
        background-color: #225522
     }
     del {
        background-color: #662222
     }
     a {
        color: #6af
     }
     a:visited {
        color: #6af
     }
     blockquote.note
     {
        background-color: rgba(255, 255, 255, .10)
     }
  }
</style>
</head>
<body>
<hr>
<p><em>This page is a snapshot from the LWG issues list, see the <a href="lwg-active.html">Library Active Issues List</a> for more information and the meaning of <a href="lwg-active.html#Resolved">Resolved</a> status.</em></p>
<h3 id="1515"><a href="lwg-defects.html#1515">1515</a>. <code>packaged_task::make_ready_at_thread_exit</code> has no synchronization requirements</h3>
<p><b>Section:</b> 32.10.10.2 <a href="https://wg21.link/futures.task.members">[futures.task.members]</a> <b>Status:</b> <a href="lwg-active.html#Resolved">Resolved</a>
 <b>Submitter:</b> INCITS <b>Opened:</b> 2010-08-25 <b>Last modified:</b> 2016-01-28</p>
<p><b>Priority: </b>Not Prioritized
</p>
<p><b>View all other</b> <a href="lwg-index.html#futures.task.members">issues</a> in [futures.task.members].</p>
<p><b>View all issues with</b> <a href="lwg-status.html#Resolved">Resolved</a> status.</p>
<p><b>Discussion:</b></p>
<p><b>Addresses US-208</b></p>

<p>
<code>packaged_task::make_ready_at_thread_exit</code> has no synchronization requirements.
</p>

<p><i>[
Resolution proposed by ballot comment:
]</i></p>

<p>
Figure out what the synchronization requirements
should be and write them.
</p>

<p><i>[2011-02-09 Anthony provides a proposed resolution]</i></p>


<p><i>[2011-02-19 Additional edits by Hans, shown in the proposed resolution section]</i></p>


<p><i>[2011-02-22 Reflector discussion]</i></p>

<p>
Moved to Tentatively Ready after 5 votes.
</p> 

<blockquote class="note">
<p>Proposed Resolution</p>

<p>Add a new paragraph following 32.10.10.2 <a href="https://wg21.link/futures.task.members">[futures.task.members]</a> p. 19:</p>

<blockquote><pre>
void make_ready_at_thread_exit(ArgTypes... args);
</pre></blockquote>
<blockquote>
<p>
19 - ...
</p>
<p>
<ins>?? - <i>Synchronization</i>: Following a successful call to <code>make_ready_at_thread_exit</code>, the
destruction of all objects with thread storage duration associated with
the current thread happens before the associated asynchronous state is
made ready. The marking of the associated asynchronous state as ready
synchronizes with (6.10.2 <a href="https://wg21.link/intro.multithread">[intro.multithread]</a>) the successful return from any function that
detects that the state is set to ready.</ins>
</p>
</blockquote>
</blockquote>


<p id="res-1515"><b>Proposed resolution:</b></p><p>
Resolved 2011-03 Madrid meeting by paper <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3278">N3278</a>
</p>




</body>
</html>
