From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Ihor Radchenko Newsgroups: gmane.emacs.devel Subject: Re: Concurrency via isolated process/thread Date: Mon, 17 Jul 2023 08:52:44 +0000 Message-ID: <875y6i2a3n.fsf@localhost> References: <871qhnr4ty.fsf@localhost> <87r0plxbep.fsf@localhost> <83ilawhpi6.fsf@gnu.org> <87zg48apwr.fsf@localhost> <83edljg8ub.fsf@gnu.org> <87o7knbxr7.fsf@localhost> <838rbrg4mg.fsf@gnu.org> <87ilavbvdr.fsf@localhost> <834jmffvhy.fsf@gnu.org> <878rbrbmwr.fsf@localhost> <83fs5zecpo.fsf@gnu.org> <87351zbi72.fsf@localhost> <83351yevde.fsf@gnu.org> <87cz12ad2w.fsf@localhost> <83a5w6cwdr.fsf@gnu.org> <87pm518m0g.fsf@localhost> <83o7kl9tyj.fsf@gnu.org> <874jmd89us.fsf@localhost> <87y1jf29a4.fsf@localhost> <878rbf0y6b.fsf@localhost> <87h6q36ijw.fsf@yahoo.com> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="25380"; mail-complaints-to="usenet@ciao.gmane.io" Cc: Eli Zaretskii , emacs-devel@gnu.org To: Po Lu Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Mon Jul 17 10:53:23 2023 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1qLJys-0006MI-IW for ged-emacs-devel@m.gmane-mx.org; Mon, 17 Jul 2023 10:53:22 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qLJyB-0003zS-I5; Mon, 17 Jul 2023 04:52:39 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qLJy9-0003zJ-FN for emacs-devel@gnu.org; Mon, 17 Jul 2023 04:52:37 -0400 Original-Received: from mout02.posteo.de ([185.67.36.66]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qLJy7-00042t-91 for emacs-devel@gnu.org; Mon, 17 Jul 2023 04:52:37 -0400 Original-Received: from submission (posteo.de [185.67.36.169]) by mout02.posteo.de (Postfix) with ESMTPS id 0F88D240105 for ; Mon, 17 Jul 2023 10:52:32 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1689583953; bh=7k1csI3wkUgUGX0flK8jIeElPzJGPPTtyRFeZglzQLY=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:From; b=RzCiCdZnXxmks6flfFATH3FdRCiXl85IcQAqfKnL9lR6oui/gMyoiaTuc5Nh8LDvE +pow2P1MKaPZH845Ynf+PUH+vJStiesGkx9AShVwbxA/B/kkb1YKs63/3Q5Ak26/U2 u0RbeebyPD0npUMPGvIXrVSfybcK6RUVLfeLFHRYfG4JyWCq4xOoChQqK/NxHqFS2c 2tnygzdoyoGnZOAdTmIhXrAD+iS3xs4ANRpA7fjTWmG96dC49KgXXlmU9Cu1r+ztH5 1dQmA8UTxLNi802vDFWjrgrjTyGQl8uitYVyUQSXC+X8OuJh1GBdYWag6s3WnCP8u4 DBwZ1uGRu8Vag== Original-Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4R4G735t4rz6tvm; Mon, 17 Jul 2023 10:52:31 +0200 (CEST) In-Reply-To: <87h6q36ijw.fsf@yahoo.com> Received-SPF: pass client-ip=185.67.36.66; envelope-from=yantar92@posteo.net; helo=mout02.posteo.de X-Spam_score_int: -53 X-Spam_score: -5.4 X-Spam_bar: ----- X-Spam_report: (-5.4 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_MSPIKE_H5=-1, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.devel:307919 Archived-At: Po Lu writes: >> 1. We can maintain a separate, sparse (just for changed variables) >> obarray inside threads, so that `intern' >> will point to thread-local symbol objects. > > Interning happens at read (and thus load) time. Byte-code vectors and > lambdas given to make-thread contain symbols, and not their names. A > thread-local obarray will not be helpful. Fair point. Alas. >> 3. Store multiple value and function slots in symbol objects. > > Why would this be difficult? It would slow down accesses to value and > function slots (especially those which aren't bound dynamically), but > that's an unavoidable drawback of multiprocessing. Mostly because it will involve more changes than I was hoping for. And I am not sure how things will affect memory alignment of symbol objects (I do not fully understand the relevant comments in lisp.h) - we should be careful about concurrent read access to struct slots in shared objects. If there is some memory re-alignment happening concurrently, we may either have to use READ_ONCE (and degrade performance) or be extra careful to ensure that memory does not get shifted around, and we do not end up trying to read wrong memory address because some other thread wrote staff into the same symbol during the read. -- Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at . Support Org development at , or support my work at