From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Nix Newsgroups: gmane.emacs.devel Subject: Re: Multithreading, again and again Date: Fri, 21 Oct 2011 15:18:07 +0100 Message-ID: <87mxcumns0.fsf@spindle.srvr.nix> References: <4E82C377.4040007@yandex.ru> <87vcrne2pv.fsf@mail.jurta.org> <20111020011234.2CE4113C57A@vps1.kiwanami.net> <20111021004703.C765F13C55F@vps1.kiwanami.net> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: dough.gmane.org 1319206712 15352 80.91.229.12 (21 Oct 2011 14:18:32 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Fri, 21 Oct 2011 14:18:32 +0000 (UTC) Cc: tromey@redhat.com, monnier@IRO.UMontreal.CA, emacs-devel@gnu.org To: SAKURAI Masashi Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Fri Oct 21 16:18:25 2011 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([140.186.70.17]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1RHFvR-0001aK-Hn for ged-emacs-devel@m.gmane.org; Fri, 21 Oct 2011 16:18:21 +0200 Original-Received: from localhost ([::1]:59226 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RHFvR-0007gU-04 for ged-emacs-devel@m.gmane.org; Fri, 21 Oct 2011 10:18:21 -0400 Original-Received: from eggs.gnu.org ([140.186.70.92]:34326) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RHFvO-0007gD-9E for emacs-devel@gnu.org; Fri, 21 Oct 2011 10:18:19 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RHFvN-0001ta-78 for emacs-devel@gnu.org; Fri, 21 Oct 2011 10:18:18 -0400 Original-Received: from icebox.esperi.org.uk ([81.187.191.129]:49084 helo=mail.esperi.org.uk) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RHFvM-0001sg-Ln for emacs-devel@gnu.org; Fri, 21 Oct 2011 10:18:17 -0400 Original-Received: from esperi.org.uk (nix@spindle.srvr.nix [192.168.14.15]) by mail.esperi.org.uk (8.14.5/8.14.5) with ESMTP id p9LEI7BH015581; Fri, 21 Oct 2011 15:18:07 +0100 Original-Received: (from nix@localhost) by esperi.org.uk (8.14.5/8.14.5/Submit) id p9LEI7gd004792; Fri, 21 Oct 2011 15:18:07 +0100 Emacs: ... it's not just a way of life, it's a text editor! In-Reply-To: <20111021004703.C765F13C55F@vps1.kiwanami.net> (SAKURAI Masashi's message of "Fri, 21 Oct 2011 09:46:41 +0900") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.90 (gnu/linux) X-DCC-STAT_FI_X86_64_VIRTUAL-Metrics: spindle 1245; Body=4 Fuz1=4 Fuz2=4 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 81.187.191.129 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 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.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:145393 Archived-At: On 21 Oct 2011, SAKURAI Masashi uttered the following: > At Thu, 20 Oct 2011 14:17:46 -0400, > Stefan Monnier wrote: >> Basically, Emacs uses a MVC approach and your work makes the controller >> multithreaded but the viewer (which is implemented in C) is still single >> threaded. > > I'm very interesting in the implementation of the event driven GUI and > MVC approach. Where should I read the sources in the Emacs repository? The split isn't that formal because Emacs predates even the first academic descriptions of MVC by three years or so. But in a sense one could consider the 'view' part to be the redisplay engine in xdisp.c and dispnew.c (any thoughts on renaming that? It's not that 'new' anymore); the model part is the Emacs datastructures that Lisp et al update, and the functions that serve to keep them up to date, and the controller is the Lisp, lisp evaluator, and assisting functions in C. The only really solid part of this split is that nothing except redisplay draws to the screen (except in extremis, e.g. crash messages). -- NULL && (void)