{"id":548,"date":"2009-07-18T07:52:28","date_gmt":"2009-07-18T12:52:28","guid":{"rendered":"http:\/\/boulter.com\/blog\/?p=548"},"modified":"2009-07-18T07:53:10","modified_gmt":"2009-07-18T12:53:10","slug":"why-is-programming-threads-hard","status":"publish","type":"post","link":"http:\/\/boulter.com\/blog\/2009\/07\/18\/why-is-programming-threads-hard\/","title":{"rendered":"Why is programming threads hard?"},"content":{"rendered":"<p>I keep reading stuff about most engineers being too stupid to understand how to program threads. I don&#8217;t get it. <\/p>\n<p>I never used threads until I started programming in Java 10+ years ago and it seemed pretty easy. You create a new thread, let it do some stuff and join() on it if you want to wait for it to complete. It makes it easy to access things in memory across threads. Of course if you want to modify things in that shared memory, you have to implement some locking on those objects, but that&#8217;s not that hard either. Perhaps it&#8217;s a bit harder if you&#8217;re programming threads in a language that doesn&#8217;t manage memory.<\/p>\n<p>So tell me, am I a programming genius that finds threads easy (unlikely) or am I missing some big usage of threads that makes it impossible for a mental peon like me (more likely)?<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I keep reading stuff about most engineers being too stupid to understand how to program threads. I don&#8217;t get it. I never used threads until I started programming in Java 10+ years ago and it seemed pretty easy. You create a new thread, let it do some stuff and join() on it if you want &#8230;<\/p>\n<p><a href=\"http:\/\/boulter.com\/blog\/2009\/07\/18\/why-is-programming-threads-hard\/\" class=\"more-link\">Continue reading &lsquo;Why is programming threads hard?&rsquo; &raquo;<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-548","post","type-post","status-publish","format-standard","hentry","category-general"],"_links":{"self":[{"href":"http:\/\/boulter.com\/blog\/wp-json\/wp\/v2\/posts\/548","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/boulter.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/boulter.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/boulter.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/boulter.com\/blog\/wp-json\/wp\/v2\/comments?post=548"}],"version-history":[{"count":2,"href":"http:\/\/boulter.com\/blog\/wp-json\/wp\/v2\/posts\/548\/revisions"}],"predecessor-version":[{"id":550,"href":"http:\/\/boulter.com\/blog\/wp-json\/wp\/v2\/posts\/548\/revisions\/550"}],"wp:attachment":[{"href":"http:\/\/boulter.com\/blog\/wp-json\/wp\/v2\/media?parent=548"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/boulter.com\/blog\/wp-json\/wp\/v2\/categories?post=548"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/boulter.com\/blog\/wp-json\/wp\/v2\/tags?post=548"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}