all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Eli Zaretskii <eliz@gnu.org>
To: Lynn Winebarger <owinebar@gmail.com>
Cc: emacs-devel@gnu.org
Subject: Re: Blocking calls and threads
Date: Thu, 20 Apr 2023 10:23:46 +0300	[thread overview]
Message-ID: <838ren6mpp.fsf@gnu.org> (raw)
In-Reply-To: <CAM=F=bAhQxxJZLOTEekqv41mqWQQ3NzKicZb_tznYmaDdVNCoA@mail.gmail.com> (message from Lynn Winebarger on Thu, 20 Apr 2023 01:31:14 -0400)

> From: Lynn Winebarger <owinebar@gmail.com>
> Date: Thu, 20 Apr 2023 01:31:14 -0400
> 
> The thread on how to make asynchronous behavior explicit made me
> curious whether making a blocking system call would cause the lisp
> thread to yield to other lisp threads (release the global lock).  Do
> blocking system calls yield the lisp thread, or is there any way in
> lisp code to call blocking functions so that the lisp thread will
> yield while the system thread blocks?

What do you mean by "blocking system calls", exactly?

If you mean the likes of 'read' and 'write' (i.e. "blocking system
calls" on the OS level), then no, a thread which makes these calls
will not yield.  How can it? the implementation of those calls is not
in Emacs, so how can Emacs change the way these syscalls work?

The "blocking system calls" which do yield are calls emitted from
Lisp: accept-process-output, sit-for, read-key-sequence, etc.



  parent reply	other threads:[~2023-04-20  7:23 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-04-20  5:31 Blocking calls and threads Lynn Winebarger
2023-04-20  7:00 ` Po Lu
2023-04-20  7:23 ` Eli Zaretskii [this message]
2023-04-20 13:06   ` Lynn Winebarger
2023-04-20 13:28     ` Po Lu
2023-04-20 14:26       ` Lynn Winebarger
2023-04-20 13:37     ` Eli Zaretskii
2023-04-20 14:19       ` Lynn Winebarger
2023-04-20 14:36         ` Eli Zaretskii
2023-04-21  4:39           ` Lynn Winebarger
2023-04-21 13:43             ` Lynn Winebarger

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=838ren6mpp.fsf@gnu.org \
    --to=eliz@gnu.org \
    --cc=emacs-devel@gnu.org \
    --cc=owinebar@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.