<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic HLE - XRELEASE in Intel® Moderncode for Parallel Architectures</title>
    <link>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/HLE-XRELEASE/m-p/807073#M864</link>
    <description>&lt;P&gt;One of the advantages of HLE and RTM locks not highlighted in your post, or in the reference specification, is this reduces (if not eliminates) the need for Wait-Free programming. Use of HLE or RTM removes the nasty side effect of preempting a thread holding a lock, which is principally the reason for writing code in Wait-Free format. (Wait-Free avoids lock held for duration of preemption.)&lt;/P&gt;&lt;P&gt;In the reference manual:&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;8.3.3 Requirements for HLE Locks&lt;/P&gt;&lt;P&gt;...&lt;/P&gt;&lt;P&gt;An XRELEASE prefixed instruction must restore the value of the elided lock to the&lt;/P&gt;&lt;P&gt;value it had before the lock acquisition.&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;While following this rule different sections of a protected structure can be concurrently updated, as shown in your example (provided non-conflicting updates).&lt;/P&gt;&lt;P&gt;Why not permit an XRELEASE performed to a different value to cause the first such release to win and all subsequent XRELEASE (XEND) to abort?&lt;/P&gt;&lt;P&gt;An example of this might be an XACQUIRE that sets a lock flag in the lsb of a pointer, then using the pointer to the object to reference the object. After processing, the XRELEASE may need to restore the pointer to a different value (say different pointer or NULL or different state of lock). This may occur in linked list management. While you could say in these cases do not use HLE/RTM then this exposes the problem of thread preemption.&lt;/P&gt;</description>
    <pubDate>Fri, 17 Feb 2012 15:36:04 GMT</pubDate>
    <dc:creator>jimdempseyatthecove</dc:creator>
    <dc:date>2012-02-17T15:36:04Z</dc:date>
    <item>
      <title>HLE - XRELEASE</title>
      <link>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/HLE-XRELEASE/m-p/807073#M864</link>
      <description>&lt;P&gt;One of the advantages of HLE and RTM locks not highlighted in your post, or in the reference specification, is this reduces (if not eliminates) the need for Wait-Free programming. Use of HLE or RTM removes the nasty side effect of preempting a thread holding a lock, which is principally the reason for writing code in Wait-Free format. (Wait-Free avoids lock held for duration of preemption.)&lt;/P&gt;&lt;P&gt;In the reference manual:&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;8.3.3 Requirements for HLE Locks&lt;/P&gt;&lt;P&gt;...&lt;/P&gt;&lt;P&gt;An XRELEASE prefixed instruction must restore the value of the elided lock to the&lt;/P&gt;&lt;P&gt;value it had before the lock acquisition.&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;While following this rule different sections of a protected structure can be concurrently updated, as shown in your example (provided non-conflicting updates).&lt;/P&gt;&lt;P&gt;Why not permit an XRELEASE performed to a different value to cause the first such release to win and all subsequent XRELEASE (XEND) to abort?&lt;/P&gt;&lt;P&gt;An example of this might be an XACQUIRE that sets a lock flag in the lsb of a pointer, then using the pointer to the object to reference the object. After processing, the XRELEASE may need to restore the pointer to a different value (say different pointer or NULL or different state of lock). This may occur in linked list management. While you could say in these cases do not use HLE/RTM then this exposes the problem of thread preemption.&lt;/P&gt;</description>
      <pubDate>Fri, 17 Feb 2012 15:36:04 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/HLE-XRELEASE/m-p/807073#M864</guid>
      <dc:creator>jimdempseyatthecove</dc:creator>
      <dc:date>2012-02-17T15:36:04Z</dc:date>
    </item>
  </channel>
</rss>

