commit e68f07d46f5f168dc2076286627279540bf1f99e
parent b73633b1b4e9d3dbd680edf900b2b53befbf5a9a
Author: Russ Cox <rsc@swtch.com>
Date: Wed, 30 Dec 2020 00:16:10 -0500
libthread: make pthreadperthread the default
Diffstat:
2 files changed, 15 insertions(+), 21 deletions(-)
diff --git a/man/man3/thread.3 b/man/man3/thread.3
@@ -158,27 +158,21 @@ by
The thread library provides a
.I main
function that sets up a proc with a single thread executing
-.I threadmain
-on a stack of size
-.I mainstacksize
-(default eight kilobytes).
-To set
-.IR mainstacksize ,
-declare a global variable
-initialized to the desired value
-.RI ( e.g. ,
-.B int
-.B mainstacksize
-.B =
-.BR 1024 ).
-When using the
+.IR threadmain .
+.PP
+Every thread is backed by an operating system-provided
.I pthread
-library,
-.B mainstacksize
-is ignored, as is the stack size argument to
-.BR proccreate :
-the first thread in each proc
-runs on the native system stack.
+and runs on its system-provided stack;
+.I mainstacksize
+and the the stack size arguments to
+.I proccreate
+and
+.I threadcreate
+are ignored.
+Although each thread is backed by a separate
+.IR pthread ,
+the threads in a proc are still scheduled non-preemptively
+as on Plan 9 and as described below.
.PP
.I Threadcreate
creates a new thread in the calling proc, returning a unique integer
diff --git a/src/libthread/thread.c b/src/libthread/thread.c
@@ -7,7 +7,7 @@ static uint threadnsysproc;
static Lock threadnproclock;
static Ref threadidref;
static Proc *threadmainproc;
-static int pthreadperthread;
+static int pthreadperthread = 1;
static void addproc(Proc*);
static void delproc(Proc*);