{"id":26320,"date":"2012-01-08T23:22:02","date_gmt":"2012-01-08T15:22:02","guid":{"rendered":"http:\/\/www.yankay.com\/?p=26320"},"modified":"2012-01-08T23:22:02","modified_gmt":"2012-01-08T15:22:02","slug":"%e5%b9%b6%e5%8f%91%e7%bc%96%e7%a8%8b%e4%b9%8b%e5%b7%a7%e7%94%a8%e9%94%81","status":"publish","type":"post","link":"http:\/\/yankay.com\/%e5%b9%b6%e5%8f%91%e7%bc%96%e7%a8%8b%e4%b9%8b%e5%b7%a7%e7%94%a8%e9%94%81\/","title":{"rendered":"\u5e76\u53d1\u7f16\u7a0b\u4e4b\u5de7\u7528\u9501"},"content":{"rendered":"
\u80cc\u666f<\/strong><\/p>\n \u7a0b\u5e8f\u90fd\u662f\u8dd1\u5728\u673a\u5668\u4e0a\u7684\uff0c\u5e76\u884cCPU\u5305\u542b\u51e0\u4e2a\u90e8\u5206\u3002<\/p>\n \u8fd9\u91cc\u7684GetAndSet\u65b9\u6cd5\u662f\u4e00\u4e2aCPU\u7684CAS\u786c\u4ef6\u6307\u4ee4\u3002\u6211\u4eec\u53ef\u4ee5\u770b\u5230\uff0c\u6bcf\u6b21\u8c03\u7528\u8fd9\u4e2a\u8d28\u91cf\uff0cCPU\u8981\u4fdd\u8bc1\u7f13\u5b58\u4e00\u81f4\uff0c\u4e22\u5f03\u8be5CPU\u6301\u6709\u8be5\u53d8\u91cf\u7684\u7f13\u5b58\uff0c\u91cd\u65b0\u52a0\u8f7d\u3002\u4f1a\u6d88\u8017\u81f3\u5c11\u6570\u5341\u4e2a\u65f6\u949f\u5468\u671f\u7684\u65f6\u95f4\u3002\u6240\u4ee5\u53ef\u4ee5\u8fdb\u884c\u5982\u4e0b\u6539\u8fdb\u3002<\/p>\n \u8fd9\u4e2a\u9501\u548c\u4e0a\u9762\u7684\u9501\u903b\u8f91\u4e0a\u662f\u4e00\u6837\u7684\u3002\u533a\u522b\u662f\u5904\u7406\u5668\u5728\u81ea\u65cb\u7684\u65f6\u5019\uff0c\u4e0d\u518d\u6267\u884cCAS\uff0c\u800c\u662f\u6267\u884c\u4e00\u4e2aget\u64cd\u4f5c\uff0c\u76f4\u63a5\u4ece\u4e00\u7ea7\u7f13\u5b58\u4e2d\u53d6\u6570\u636e\uff0c\u4e0d\u4e3b\u52a8\u540c\u6b65\u3002\u8ba9\u53d1\u73b0\u72b6\u6001\u6709\u6240\u53d8\u5316\u540e\uff0c\u518d\u901a\u8fc7CAS\u64cd\u4f5c\u786e\u8ba4\u5e76\u52a0\u9501\u3002\u8fd9\u6837\u53ef\u4ee5\u5927\u5927\u51cf\u5c11CAS\u6307\u4ee4\u7684\u6570\u91cf\uff0c\u8282\u7ea6\u4e86\u5904\u7406\u5668\u4e4b\u95f4\u7684\u4fe1\u606f\u6d41\u91cf\u3002<\/p>\n \u5f53\u7136\u8fd9\u4e2a\u9501\u8fd8\u6709\u5f88\u591a\u53ef\u4ee5\u6539\u8fdb\u7684\u5730\u65b9\uff0c\u4e0d\u8be6\u8ff0\u4e86\u3002\u4e0d\u8fc7\u5176\u4e2d\u201c\u4e50\u89c2\u201d\u7684\u601d\u60f3\u662f\u503c\u5f97\u501f\u9274\u7684\u3002\u4e0b\u9762\u603b\u7ed3\u4e86\u4e00\u4e2a\u7528\u9501\u65f6\u5019\u7684\u65b9\u6cd5\uff0c\u53ef\u4ee5\u63d0\u9ad8\u6027\u80fd\u3002<\/p>\n\n
public void lock(){\n while(state.getAndSet(true)){}\n }<\/pre>\n<\/div>\n
\u00a0 \u00a0public void lock(){\n while(true){\n\u00a0 \u00a0 \u00a0 \u00a0 while(state.get()){};\n if(!state.getAndSet(true))\n return;\n\u00a0 \u00a0 }<\/pre>\n<\/div>\n