Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 24 May 2003 02:41:58 -0400 (EDT)
From:      Daniel Eischen <eischen@pcnet1.pcnet.com>
To:        Valentin Nechayev <netch@netch.kiev.ua>
Cc:        Julian Elischer <julian@elischer.org>
Subject:   Re: libkse and SMP (was Re: USB bulk read & pthreads)
Message-ID:  <Pine.GSO.4.10.10305240235460.15741-100000@pcnet1.pcnet.com>
In-Reply-To: <20030524061631.GA3167@iv.nn.kiev.ua>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sat, 24 May 2003, Valentin Nechayev wrote:
> DE> I'm not sure if what you meant here, but here's a (hopefully)
> DE> clearer explanation.
> 
> DE> All threads that are created with PTHREAD_SCOPE_PROCESS
> DE> (the default) will run in the same (initial) KSEG.  The
> DE> initial KSEG will have as many KSEs as CPUs by default.
> DE> When a scope process thread blocks in the kernel, upcalls
> DE> are made to the originating KSE and a new thread is scheduled.
> DE> When scope process threads unblock in the kernel, upcalls
                         ^^^^^^^ plural

> DE> are made to one or more of the same KSEs within the initial
> DE> KSEG to notify the library that the threads can be resumed.
> 
> DE> Each scope system thread gets its own KSE/KSEG pair in which
> DE> to run.
> 
> Sorry, I again lost understanding of this ;((
> Consider system with single CPU and 2 threads (with process scope) which
> both calls blocking disk read. Can the second thread block in read()
> before first thread returns from blocking read()? Or system scope
> is required for this?

Multiple scope process threads can be blocked in the kernel
at the same time.  This does not prevent other scope process
threads from being run.

-- 
Dan Eischen



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.GSO.4.10.10305240235460.15741-100000>