From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Eli Zaretskii Newsgroups: gmane.emacs.devel Subject: Re: Concurrency via isolated process/thread Date: Thu, 06 Jul 2023 17:13:07 +0300 Message-ID: <83y1jtgmbw.fsf@gnu.org> References: <871qhnr4ty.fsf@localhost> <83v8ezk3cj.fsf@gnu.org> <87v8ezpov0.fsf@localhost> <83r0pnk2az.fsf@gnu.org> <87pm57pns8.fsf@localhost> <87lefvp55t.fsf@yahoo.com> <87sfa28ura.fsf@localhost> <87cz16o8vz.fsf@yahoo.com> <87jzve8r4m.fsf@localhost> <871qhmo5nv.fsf@yahoo.com> <87bkgq8p5t.fsf@localhost> <831qhmjwk0.fsf@gnu.org> <875y6y8nlr.fsf@localhost> <87h6qhnalc.fsf@yahoo.com> <87ilax71wo.fsf@localhost> <878rbtkz2c.fsf@yahoo.com> <87a5w96x2o.fsf@localhost> <87jzvdjjp4.fsf@yahoo.com> <877crd6w53.fsf@localhost> <877crdjiwn.fsf@yahoo.com> <874jmh6v4s.fsf@localhost> Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="14023"; mail-complaints-to="usenet@ciao.gmane.io" Cc: luangruo@yahoo.com, emacs-devel@gnu.org To: Ihor Radchenko Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Thu Jul 06 16:13:29 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 1qHPjc-0003TF-VM for ged-emacs-devel@m.gmane-mx.org; Thu, 06 Jul 2023 16:13:29 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qHPjR-0004ni-CR; Thu, 06 Jul 2023 10:13:17 -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 1qHPjP-0004mH-Rf for emacs-devel@gnu.org; Thu, 06 Jul 2023 10:13:15 -0400 Original-Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qHPjP-0006N7-Fv; Thu, 06 Jul 2023 10:13:15 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=dSHgG/7A7utegs1HJ0fjmzXOV44FmllwfTeCQpztniY=; b=npO7ftTT9FIS 1vtqTUVGrvB0Qx7fc3PnEU7qiL+yXIPRkNk6RQJ+WHUYzssp+E5GeYMGuJSrJPPA1q+GsE3j0wiPe 7iPcS+/nbEw8N4p3QwCRmphmEZTakEuKonsFz4CSkIqgs7MD9yp+JPQ8QLgfI+mBwHt2SId2pZUK8 JK479+EjSqPYsHPVYZJOKIgJLv8wNpxXyKkVUxp2E5J5YTfoZITCBCnTnWAkHohZV/KG2ShC9WW88 jgaVdXL1A74ehIbISpSDOAlHDfs65u/nTg20y2DPHj4RDgjQm4ebnGmkBl+nYHtB0D+wFw4A7sbiS cF1XqoC0Wt56kCEJnKRk6g==; Original-Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qHPjG-0005eB-MK; Thu, 06 Jul 2023 10:13:14 -0400 In-Reply-To: <874jmh6v4s.fsf@localhost> (message from Ihor Radchenko on Thu, 06 Jul 2023 13:13:07 +0000) 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:307509 Archived-At: > From: Ihor Radchenko > Cc: Eli Zaretskii , emacs-devel@gnu.org > Date: Thu, 06 Jul 2023 13:13:07 +0000 > > Po Lu writes: > > >>>> LOCK_OBJECT (foo); > >>>> LOCK_OBJECT (XCAR (foo)); > >>> ... > >> ... > >> Do you mean that locking XCAR (foo) is unnecessary when foo is locked? > > > > No, that there is no need to lock a cons (or a vector, or anything else > > with a fixed number of Lisp_Object slots) before reading or writing to > > it. > > I feel confused here. > > My understanding is > > CHECK_STRING (XCAR (foo)); > > foo = XSTRING (XCAR (foo)); > > So, locking is needed to ensure that CHECK_STRING assertion remains valid. > > Or did you refer to something else? I don't know what Po Lu had in mind, but one aspect of this is that a string object might keep its memory address, but its data could be relocated. This can happen as part of GC, and is the reason why string data is kept separate from the string itself.