A program is divided into several instruction streams, and each of them is executed
as a thread. A thread processor executed the thread. The thread generates another
thread, but one thread is controlled to make a fork operation at most once. Each
thread is terminated in the order of generations. A thread manager may be shared
with the several thread processors or be distributed to the several thread processors.
The thread manager includes a thread sequencer and a thread status table. The thread
status table manages execution status of each thread processor and parent-child
relation. The thread sequencer requests a thread generation and permits its termination
in accordance with the content of the thread status table. The thread processor
can execute a thread speculatively.