On Thu, Aug 24, 2000, À¯½ÂÈÆ wrote:

>   Hi, my name is Ryu, and I am a newbie to C and am studying about thread.
>   I was reading your manuals of pth, and there was 'standard POSIX
>   replacements API', 'pth_write', 'pth_sleep', and etc.  
>  
>   You said that these functions would only block that thread not the whole
>   process, and there is a example which uses 'pth_' type functions instead
>   of using 'write()' or 'sleep()'.  My question is why 'read()' will block
>   the whole process not the thread which uses 'read()'.  Won't 'read()'
>   block only that thread?  I read a little bit about  LinuxThread, and it
>   does not seem to indicate anything about  'standard POSIX replacements
>   API'.  

read(2) is a system call implemented by the Unix kernel.  The Unix kernel
knowns nothing about user-land threads inside processes as Pth provides. So if
a system call like read(2) has to wait for an event (here no data available
for reading) the kernel suspends the calling process and consequently all
user-lands threads inside this process. By using pth_read(2) the
suspension of the process by the kernel is avoided and instead Pth's
scheduler suspends only the calling _thread_.

LinuxThreads is special in two cases: First it has no such problem, because
its threads are located in kernel-land (simplified: a LinuxThreads thread is a
Linux process). Second, LinuxThreads is tied into glibc (and this way
non-portable, of course) and this way doesn't have to provide an explicit API
which replaces system calls (instead it can directly hook into the syscall
stubs in libc).
 
>   Another question is about creating a new thread within a thread.  After a
>   thread is created from 'main(), is it OK to create threads within a
>   thread?  Thanks.

Yes, sure. You can create threads from within threads.

                                       Ralf S. Engelschall
                                       [EMAIL PROTECTED]
                                       www.engelschall.com
______________________________________________________________________
GNU Portable Threads (Pth)            http://www.gnu.org/software/pth/
User Support Mailing List                            [EMAIL PROTECTED]
Automated List Manager (Majordomo)           [EMAIL PROTECTED]

Reply via email to