{"version":"1.0","image_url":null,"provider_url":"https://hatena.blog","height":"190","description":"Ruby\u3067\u7d50\u57ce\u6d69\u305b\u3093\u305b\u3044\u306eJava\u30de\u30eb\u30c1\u30b9\u30ec\u30c3\u30c9\u672c \uff18 # Read-Write Lock \u8aad\u8fbc\u4e2d\u306f\u66f8\u304b\u306a\u3044\u3002 \u30ed\u30b0\u30d5\u30a1\u30a4\u30eb\u306eFlush\u3068\u304b\u3001MySQL\u3060\u3068SELECT for UPDATE \u3063\u3066\u3068\u3053\u308d\u304b\u3002 ruby\u3067\u66f8\u3044\u3066\u307f\u305f #!/usr/bin/env ruby require 'thread' # Read Write Lock class ReadWriteLock def initialize @reading_readers = 0 @waiting_writers = 0 @writing_writers = 0 @prefere_writers = true @m = Mut\u2026","provider_name":"Hatena Blog","categories":["ruby","\u30de\u30eb\u30c1\u30b9\u30ec\u30c3\u30c9"],"html":"<iframe src=\"https://hatenablog-parts.com/embed?url=https%3A%2F%2Ftakuya-1st.hatenablog.jp%2Fentry%2F20101124%2F1290569782\" title=\"Ruby\u3067\u30de\u30eb\u30c1\u30b9\u30ec\u30c3\u30c9 \u305d\u306e\uff18 # Read-Write Lock - \u305d\u308c\u30de\u30b0\u3067\uff01\" class=\"embed-card embed-blogcard\" scrolling=\"no\" frameborder=\"0\" style=\"display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px;\"></iframe>","author_url":"https://blog.hatena.ne.jp/takuya_1st/","type":"rich","width":"100%","url":"https://takuya-1st.hatenablog.jp/entry/20101124/1290569782","blog_title":"\u305d\u308c\u30de\u30b0\u3067\uff01","author_name":"takuya_1st","blog_url":"https://takuya-1st.hatenablog.jp/","published":"2010-11-24 12:36:22","title":"Ruby\u3067\u30de\u30eb\u30c1\u30b9\u30ec\u30c3\u30c9 \u305d\u306e\uff18 # Read-Write Lock"}