Browse Prior Art Database

Asynchronous Posix Threads

IP.com Disclosure Number: IPCOM000118325D
Original Publication Date: 1996-Dec-01
Included in the Prior Art Database: 2005-Apr-01
Document File: 2 page(s) / 61K

Publishing Venue

IBM

Related People

Ault, DF: AUTHOR [+3]

Abstract

Disclosed is a method for queuing POSIX compliant threads (pthreads) in the kernel without using additional invoker resources. The queued pthreads are maintained by the kernel and may be acted upon by the invoker via pthread_kill(), pthread_cancel(), pthread_join() ...etc.

This text was extracted from an ASCII text file.
This is the abbreviated version, containing approximately 59% of the total text.

Asynchronous Posix Threads

      Disclosed is a method for queuing POSIX compliant threads
(pthreads) in the kernel without using additional invoker resources.
The queued pthreads are maintained by the kernel and may be acted
upon by the  invoker via pthread_kill(), pthread_cancel(),
pthread_join() ...etc.

      OpenMVS has provided the ability to create asynchronous
pthreads by allowing the invoker to simply set an attribute flag
stating that the pthread to be created can be queued in the kernel if
resources do not exist to run the pthread on an MVS task.  That is,
the pthread is created with the thread ID being returned to the
invoker of pthread_create, but the newly created pthread is not given
a MVS task to run on.  These pthreads do not require user process
resources but can still be acted upon by all the POSIX functions
(pthread_join, pthread_cancel, etc.).  In this way, the
pthread_create invoking process can exceed the resources that would
otherwise have failed the pthread_create function.  The Thread_ID
returned to the invoker is a fully maintained POSIX thread and will
run when the kernel  detects that the appropriate resources are
available.

      An additional service is provided called
'set_thread_limits'.  This service allows the process to tell OpenMVS
how many MVS tasks to create to run the threads on.  It also allows
the process to set a limit on how many threads (running and queued)
are allowed to be created at any given time.

    ...