From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-Status: No, score=-2.6 required=3.0 tests=AWL,BAYES_00, DKIM_ADSP_CUSTOM_MED,FORGED_GMAIL_RCVD,FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY shortcircuit=no autolearn=no autolearn_force=no version=3.4.2 Received: from neon.ruby-lang.org (neon.ruby-lang.org [221.186.184.75]) by dcvr.yhbt.net (Postfix) with ESMTP id 394E61F4B4 for ; Wed, 6 Jan 2021 15:14:12 +0000 (UTC) Received: from neon.ruby-lang.org (localhost [IPv6:::1]) by neon.ruby-lang.org (Postfix) with ESMTP id 25D7E120A4E; Thu, 7 Jan 2021 00:13:22 +0900 (JST) Received: from o1678948x4.outbound-mail.sendgrid.net (o1678948x4.outbound-mail.sendgrid.net [167.89.48.4]) by neon.ruby-lang.org (Postfix) with ESMTPS id 147EB120A16 for ; Thu, 7 Jan 2021 00:13:19 +0900 (JST) Received: by filterdrecv-p3iad2-74bd9fb996-s7qqb with SMTP id filterdrecv-p3iad2-74bd9fb996-s7qqb-19-5FF5D3BE-2F 2021-01-06 15:14:06.327276397 +0000 UTC m=+2304712.892140340 Received: from herokuapp.com (unknown) by geopod-ismtpd-1-1 (SG) with ESMTP id YJdc8Qs4SWm0vH_2HVYoRw for ; Wed, 06 Jan 2021 15:14:06.302 +0000 (UTC) Date: Wed, 06 Jan 2021 15:14:06 +0000 (UTC) From: dsisnero@gmail.com Message-ID: References: Mime-Version: 1.0 X-Redmine-MailingListIntegration-Message-Ids: 77868 X-Redmine-Project: ruby-master X-Redmine-Issue-Tracker: Feature X-Redmine-Issue-Id: 14706 X-Redmine-Issue-Author: mperham X-Redmine-Sender: dsisnero X-Mailer: Redmine X-Redmine-Host: bugs.ruby-lang.org X-Redmine-Site: Ruby Issue Tracking System X-Auto-Response-Suppress: All Auto-Submitted: auto-generated X-SG-EID: =?us-ascii?Q?wr1eytF=2FotmoiJuqdpesvU8qnTP42WwXoRgJjSF4fNEl1o5m0QhIGFv8+BsUaD?= =?us-ascii?Q?Xkft2hYxNQ71BMsUWVe+L58+PReasGrnRCCmkIB?= =?us-ascii?Q?o0ja6IDpQ5Pf3FR1Vh88KAKphCil1FGBihqh7Cc?= =?us-ascii?Q?3EPcMzH+Su6cY9zVDpgueET2WxoLac=2FYuh4y0dV?= =?us-ascii?Q?mWmB3r3eR5LaFQ5rtnvISy5hmcl2Ac+3SMqcakB?= =?us-ascii?Q?VWJbHsl5gFZW9vSsM=3D?= To: ruby-core@ruby-lang.org X-Entity-ID: b/2+PoftWZ6GuOu3b0IycA== X-ML-Name: ruby-core X-Mail-Count: 101961 Subject: [ruby-core:101961] [Ruby master Feature#14706] Atomic Integer incr/decr X-BeenThere: ruby-core@ruby-lang.org X-Mailman-Version: 2.1.15 Precedence: list Reply-To: Ruby developers List-Id: Ruby developers List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ruby-core-bounces@ruby-lang.org Sender: "ruby-core" Issue #14706 has been updated by dsisnero (Dominic Sisneros). Feature #12607 - ---------------------------------------- Feature #14706: Atomic Integer incr/decr https://bugs.ruby-lang.org/issues/14706#change-89814 * Author: mperham (Mike Perham) * Status: Closed * Priority: Normal ---------------------------------------- Ruby does not any thread-safe way to implement simple counters without a Mutex. Today Ruby provides Integer#succ but this funcalls "+", making it thread-unsafe as far as I know. I'd propose adding Integer#incr(amount=1) and Integer#reset which would use atomic operations, giving us thread-safe, high-performance counters. ~~~ ruby counter = 0 counter.incr # => 1 counter.incr(10) # => 11 counter.incr(-1) # => 10 counter.reset # => 10 counter # => 0 ~~~ -- https://bugs.ruby-lang.org/