From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on gnuweeb.org X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=ALL_TRUSTED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,NO_DNS_FOR_FROM,URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.6 Received: from localhost.localdomain (unknown [182.253.183.71]) by gnuweeb.org (Postfix) with ESMTPSA id 11F558061E; Wed, 19 Oct 2022 16:43:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gnuweeb.org; s=default; t=1666197798; bh=vG6uNL4wXilpYw5rYuE0dql1dU7JNN3xh1WeUuP8ld4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=XY8hkQ8mDfj8G6zsVZUtJIjZf+DogCj5mBc8fX0A3504rNfE6BGiMhWq31GfcTALq zer3lxFSnEDhikrWjMdSDQ1w4Lc19ccZvvz2FZT/Wo2NL2THj5XI0ctP3F/sr8lcSo w8dGw51q4ywZdWIPEs3z5cwqTAtU+C8b7UIAIzijdjUM/r0a40BPmcRS8uRB1yZ7XI 8v3ry4eNNdMNepYHKDdsSTq6blkWkxgejV2c2HYPdQsaAWY/cMcMFx8yAz2/COhcmm bSpmoxmrYDJ94N3YmOkNOlKVBAlYCRe7us7NR7EWuBI4VzMfpWkm9OdahiSC1kRkKy m5DYe8qTgddFA== From: Ammar Faizi To: Alviro Iskandar Setiawan Cc: Ammar Faizi , Muhammad Rizki , GNU/Weeb Mailing List Subject: [PATCH ncns v1 1/2] chnet: Optimize `put_thread()` path Date: Wed, 19 Oct 2022 23:43:08 +0700 Message-Id: <20221019164309.1709541-2-ammarfaizi2@gnuweeb.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221019164309.1709541-1-ammarfaizi2@gnuweeb.org> References: <20221019164309.1709541-1-ammarfaizi2@gnuweeb.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit List-Id: The `delete` call doesn't have to be protected by mutex. Move it to the outside of the locked region to reduce the `put_thread()` critical section time. Signed-off-by: Ammar Faizi --- chnet/chnet.cc | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/chnet/chnet.cc b/chnet/chnet.cc index e6b4c64..ba3c076 100644 --- a/chnet/chnet.cc +++ b/chnet/chnet.cc @@ -746,10 +746,13 @@ static void put_thread(void *thread) if (--th->ref_count_ == 0) { if (g_thpool) g_thpool[th->idx_] = nullptr; - - delete th; + } else { + th = nullptr; } g_thpool_lock_.unlock(); + + if (th) + delete th; } static void init_g_ch_thpool(void) -- Ammar Faizi