{"action":"created","issue":{"url":"https://api.github.com/repos/ruby-concurrency/concurrent-ruby/issues/376","labels_url":"https://api.github.com/repos/ruby-concurrency/concurrent-ruby/issues/376/labels{/name}","comments_url":"https://api.github.com/repos/ruby-concurrency/concurrent-ruby/issues/376/comments","events_url":"https://api.github.com/repos/ruby-concurrency/concurrent-ruby/issues/376/events","html_url":"https://github.com/ruby-concurrency/concurrent-ruby/pull/376","id":96141878,"number":376,"title":"Experimental thread-local variable implementation","user":{"login":"alexdowad","id":1067359,"avatar_url":"https://avatars.githubusercontent.com/u/1067359?v=3","gravatar_id":"","url":"https://api.github.com/users/alexdowad","html_url":"https://github.com/alexdowad","followers_url":"https://api.github.com/users/alexdowad/followers","following_url":"https://api.github.com/users/alexdowad/following{/other_user}","gists_url":"https://api.github.com/users/alexdowad/gists{/gist_id}","starred_url":"https://api.github.com/users/alexdowad/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alexdowad/subscriptions","organizations_url":"https://api.github.com/users/alexdowad/orgs","repos_url":"https://api.github.com/users/alexdowad/repos","events_url":"https://api.github.com/users/alexdowad/events{/privacy}","received_events_url":"https://api.github.com/users/alexdowad/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/ruby-concurrency/concurrent-ruby/labels/enhance","name":"enhance","color":"84b6eb"}],"state":"closed","locked":false,"assignee":null,"milestone":{"url":"https://api.github.com/repos/ruby-concurrency/concurrent-ruby/milestones/14","html_url":"https://github.com/ruby-concurrency/concurrent-ruby/milestones/0.9.1%20Release","labels_url":"https://api.github.com/repos/ruby-concurrency/concurrent-ruby/milestones/14/labels","id":1206561,"number":14,"title":"0.9.1 Release","description":"","creator":{"login":"pitr-ch","id":204460,"avatar_url":"https://avatars.githubusercontent.com/u/204460?v=3","gravatar_id":"","url":"https://api.github.com/users/pitr-ch","html_url":"https://github.com/pitr-ch","followers_url":"https://api.github.com/users/pitr-ch/followers","following_url":"https://api.github.com/users/pitr-ch/following{/other_user}","gists_url":"https://api.github.com/users/pitr-ch/gists{/gist_id}","starred_url":"https://api.github.com/users/pitr-ch/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pitr-ch/subscriptions","organizations_url":"https://api.github.com/users/pitr-ch/orgs","repos_url":"https://api.github.com/users/pitr-ch/repos","events_url":"https://api.github.com/users/pitr-ch/events{/privacy}","received_events_url":"https://api.github.com/users/pitr-ch/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":14,"state":"open","created_at":"2015-07-14T07:12:45Z","updated_at":"2015-07-31T14:51:32Z","due_on":"2016-07-10T04:00:00Z","closed_at":null},"comments":27,"created_at":"2015-07-20T19:38:40Z","updated_at":"2015-07-31T15:38:43Z","closed_at":"2015-07-24T19:05:21Z","pull_request":{"url":"https://api.github.com/repos/ruby-concurrency/concurrent-ruby/pulls/376","html_url":"https://github.com/ruby-concurrency/concurrent-ruby/pull/376","diff_url":"https://github.com/ruby-concurrency/concurrent-ruby/pull/376.diff","patch_url":"https://github.com/ruby-concurrency/concurrent-ruby/pull/376.patch"},"body":"WARNING! NOT PRODUCTION-READY! DO NOT MERGE! This is just for others to look at and comment on.\r\n\r\nThe included benchmark creates 100 thread-local counters, spawns 100 threads, and makes each thread increment a randomly-chosen thread-local 10000 times. On this benchmark, I measure `AlexThreadLocalVar` as outperforming the existing `RubyThreadLocalVar` by a factor of more than 14."},"comment":{"url":"https://api.github.com/repos/ruby-concurrency/concurrent-ruby/issues/comments/126727095","html_url":"https://github.com/ruby-concurrency/concurrent-ruby/pull/376#issuecomment-126727095","issue_url":"https://api.github.com/repos/ruby-concurrency/concurrent-ruby/issues/376","id":126727095,"user":{"login":"schmurfy","id":2983,"avatar_url":"https://avatars.githubusercontent.com/u/2983?v=3","gravatar_id":"","url":"https://api.github.com/users/schmurfy","html_url":"https://github.com/schmurfy","followers_url":"https://api.github.com/users/schmurfy/followers","following_url":"https://api.github.com/users/schmurfy/following{/other_user}","gists_url":"https://api.github.com/users/schmurfy/gists{/gist_id}","starred_url":"https://api.github.com/users/schmurfy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/schmurfy/subscriptions","organizations_url":"https://api.github.com/users/schmurfy/orgs","repos_url":"https://api.github.com/users/schmurfy/repos","events_url":"https://api.github.com/users/schmurfy/events{/privacy}","received_events_url":"https://api.github.com/users/schmurfy/received_events","type":"User","site_admin":false},"created_at":"2015-07-31T15:38:43Z","updated_at":"2015-07-31T15:38:43Z","body":"I remember you don't like them and your are not the only one ^^\r\nAs for me I have no issues with them and they help a lot keeping our code readable, callback calling callbacks is just an horrible way of doing things.\r\n\r\nBut the reason I am keeping a close look on concurrent-ruby is to switch to threads when I get the chance now that multi core processors are the norm, when we started our project (ruby) threads meant more problems than anything else, knowing when a switch can occurs with fibers allow to nullify some concurrency problems you have with threads.\r\n\r\nPS: I tried Celluloid and I am not a big fan of it either, they elevated black magic to an art... There are some old discussions about that from me on this issue tracker and on the mailing list if I remember well ;)"}}