<?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 Lock-Free Garbage-Collectors, without atomic_ptr... in Intel® Moderncode for Parallel Architectures</title>
    <link>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/Lock-Free-Garbage-Collectors-without-atomic-ptr/m-p/986829#M5856</link>
    <description>It is possible to create dynamic lock-free lists that allow for concurrent pushes, pops, and iterations using a "special" reference counted garbage-collector. You implement this using the wonderful cmpxchg8b instruction... ( why didn't intel do a cmpxchg16b for 64-bit? )&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;The garbage-collector is referenced and collects garbage nodes on the fly, in a 100% lock-free manor. It is used to protect CAS sections. Any nodes that any CAS-section pops, would get tossed in the current garbage collector...&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;This garbage-collector uses application threads when they reach the zero-reference count on the current garbage-collector. This make this algo as efficient as atomic_ptr.&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;Look here for some caveats on this:&lt;BR /&gt;&lt;BR /&gt;&lt;A href="http://groups.google.com/groups?selm=3F2EB82B.7B1EA981%40xemaps.com&amp;amp;rnum=1"&gt;caveats&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;Here is my lock-free stack and garbage-collector algo code:&lt;BR /&gt;&lt;BR /&gt;&lt;A href="http://appcore.home.comcast.net/pthreads/stack.h"&gt;stack.h&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;Here is a pthread test program:&lt;BR /&gt;&lt;BR /&gt;&lt;A href="http://appcore.home.comcast.net/pthreads/main.cpp"&gt;main.cpp&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;A href="http://appcore.home.comcast.net/pthreads/thread.cpp"&gt;thread.cpp&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;A href="http://appcore.home.comcast.net/pthreads/thread.h"&gt;thread.h&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;A href="http://appcore.home.comcast.net/pthreads/lfsema.cpp"&gt;lfsema.cpp&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;A href="http://appcore.home.comcast.net/pthreads/lfsema.h"&gt;lfsema.h&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;A href="http://appcore.home.comcast.net/pthreads/mutex.h"&gt;mutex.h&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;A href="http://appcore.home.comcast.net/pthreads/atomic.h"&gt;atomic.h&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;What do you guys think of my algo?&lt;BR /&gt;&lt;BR /&gt;;)</description>
    <pubDate>Tue, 05 Aug 2003 12:15:30 GMT</pubDate>
    <dc:creator>Intel_C_Intel</dc:creator>
    <dc:date>2003-08-05T12:15:30Z</dc:date>
    <item>
      <title>Lock-Free Garbage-Collectors, without atomic_ptr...</title>
      <link>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/Lock-Free-Garbage-Collectors-without-atomic-ptr/m-p/986829#M5856</link>
      <description>It is possible to create dynamic lock-free lists that allow for concurrent pushes, pops, and iterations using a "special" reference counted garbage-collector. You implement this using the wonderful cmpxchg8b instruction... ( why didn't intel do a cmpxchg16b for 64-bit? )&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;The garbage-collector is referenced and collects garbage nodes on the fly, in a 100% lock-free manor. It is used to protect CAS sections. Any nodes that any CAS-section pops, would get tossed in the current garbage collector...&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;This garbage-collector uses application threads when they reach the zero-reference count on the current garbage-collector. This make this algo as efficient as atomic_ptr.&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;Look here for some caveats on this:&lt;BR /&gt;&lt;BR /&gt;&lt;A href="http://groups.google.com/groups?selm=3F2EB82B.7B1EA981%40xemaps.com&amp;amp;rnum=1"&gt;caveats&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;Here is my lock-free stack and garbage-collector algo code:&lt;BR /&gt;&lt;BR /&gt;&lt;A href="http://appcore.home.comcast.net/pthreads/stack.h"&gt;stack.h&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;Here is a pthread test program:&lt;BR /&gt;&lt;BR /&gt;&lt;A href="http://appcore.home.comcast.net/pthreads/main.cpp"&gt;main.cpp&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;A href="http://appcore.home.comcast.net/pthreads/thread.cpp"&gt;thread.cpp&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;A href="http://appcore.home.comcast.net/pthreads/thread.h"&gt;thread.h&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;A href="http://appcore.home.comcast.net/pthreads/lfsema.cpp"&gt;lfsema.cpp&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;A href="http://appcore.home.comcast.net/pthreads/lfsema.h"&gt;lfsema.h&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;A href="http://appcore.home.comcast.net/pthreads/mutex.h"&gt;mutex.h&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;A href="http://appcore.home.comcast.net/pthreads/atomic.h"&gt;atomic.h&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;What do you guys think of my algo?&lt;BR /&gt;&lt;BR /&gt;;)</description>
      <pubDate>Tue, 05 Aug 2003 12:15:30 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/Lock-Free-Garbage-Collectors-without-atomic-ptr/m-p/986829#M5856</guid>
      <dc:creator>Intel_C_Intel</dc:creator>
      <dc:date>2003-08-05T12:15:30Z</dc:date>
    </item>
  </channel>
</rss>

