This library has 65 classes.
ECF: thread.ecf
Source code: directory list
Classes augmenting the classic EiffelThread library.
Work Distribution
Classes EL_PROCEDURE_DISTRIBUTER and EL_FUNCTION_DISTRIBUTER offer a convenient way to distribute the work of executing routines using a specific number of cores. See routine read_source_files in class EIFFEL_CONFIGURATION_FILE for an example.
Producer-Consumer Framework
A generic producer-consumer thread communication framework where a producing thread places products onto a queue for consumption by a consumer thread.
Features
Consumer Descendants
EL_CONSUMER* [P] EL_LOGGED_CONSUMER* [P] EL_CONSUMER_MAIN_THREAD* [P] EL_COUNT_CONSUMER_MAIN_THREAD* EL_TIMED_PROCEDURE_MAIN_THREAD EL_MAIN_THREAD_REGULAR_INTERVAL_EVENT_CONSUMER* EL_PROCEDURE_CALL_CONSUMER_MAIN_THREAD EL_ACTION_ARGUMENTS_CONSUMER_MAIN_THREAD [OPEN_ARGS -> TUPLE create default_create end] EL_CONSUMER_THREAD* [P] EL_MANY_TO_ONE_CONSUMER_THREAD* [P] EL_LOGGED_MANY_TO_ONE_CONSUMER_THREAD* [P] EL_COUNT_CONSUMER_THREAD* EL_TIMED_PROCEDURE_THREAD EL_DELEGATING_CONSUMER_THREAD [P, CONSUMER_TYPE -> EL_MANY_TO_ONE_CONSUMER_THREAD [P] create make end] EL_LOGGED_DELEGATING_CONSUMER_THREAD [P, CONSUMER_TYPE -> EL_MANY_TO_ONE_CONSUMER_THREAD [P] create make end] EL_PROCEDURE_CALL_CONSUMER_THREAD EL_THREAD_REGULAR_INTERVAL_EVENT_CONSUMER* EL_XML_NETWORK_MESSENGER EL_LOGGED_CONSUMER_THREAD* [P] EL_LOGGED_DELEGATING_CONSUMER_THREAD [P, CONSUMER_TYPE -> EL_MANY_TO_ONE_CONSUMER_THREAD [P] create make end] EL_LOGGED_MANY_TO_ONE_CONSUMER_THREAD* [P] EL_ACTION_ARGUMENTS_CONSUMER_THREAD [OPEN_ARGS -> TUPLE create default_create end] EL_BATCH_FILE_PROCESSING_THREAD* EL_LOGGED_BATCH_FILE_PROCESSING_THREAD* EL_REGULAR_INTERVAL_EVENT_CONSUMER* EL_MAIN_THREAD_REGULAR_INTERVAL_EVENT_CONSUMER* EL_THREAD_REGULAR_INTERVAL_EVENT_CONSUMER* EL_COUNT_CONSUMER* EL_COUNT_CONSUMER_THREAD* EL_COUNT_CONSUMER_MAIN_THREAD* EL_TIMED_PROCEDURE* EL_TIMED_PROCEDURE_MAIN_THREAD EL_TIMED_PROCEDURE_THREAD EL_PROCEDURE_CALL_CONSUMER* EL_PROCEDURE_CALL_CONSUMER_MAIN_THREAD EL_PROCEDURE_CALL_CONSUMER_THREAD EL_ACTION_ARGUMENTS_CONSUMER* [OPEN_ARGS -> TUPLE create default_create end] EL_ACTION_ARGUMENTS_CONSUMER_THREAD [OPEN_ARGS -> TUPLE create default_create end] EL_ACTION_ARGUMENTS_CONSUMER_MAIN_THREAD [OPEN_ARGS -> TUPLE create default_create end] EL_NONE_CONSUMER [P]
Product Queue Descendants
EL_THREAD_PRODUCT_QUEUE [P] EL_PROCEDURE_CALL_QUEUE EL_LOGGED_THREAD_PRODUCT_QUEUE [P] EL_ONE_TO_MANY_THREAD_PRODUCT_QUEUE [P, CONSUMER_TYPE -> EL_MANY_TO_ONE_CONSUMER_THREAD [P] create make end]
Specialized Threads
The library includes many thread classes inheriting from EL_IDENTIFIED_THREAD_I that perform specialized tasks.
Examples
Descendants
EL_IDENTIFIED_THREAD_I* EL_IDENTIFIED_THREAD* EL_FILE_PROCESS_THREAD EL_LOGGED_FILE_PROCESS_THREAD EL_WORKER_THREAD EL_TIMEOUT_THREAD EL_CONTINUOUS_ACTION_THREAD* EL_CONSUMER_THREAD* [P] EL_MANY_TO_ONE_CONSUMER_THREAD* [P] EL_LOGGED_MANY_TO_ONE_CONSUMER_THREAD* [P] EL_COUNT_CONSUMER_THREAD* EL_TIMED_PROCEDURE_THREAD EL_DELEGATING_CONSUMER_THREAD [P, CONSUMER_TYPE -> EL_MANY_TO_ONE_CONSUMER_THREAD [P] create make end] EL_LOGGED_DELEGATING_CONSUMER_THREAD [P, CONSUMER_TYPE -> EL_MANY_TO_ONE_CONSUMER_THREAD [P] create make end] EL_PROCEDURE_CALL_CONSUMER_THREAD EL_THREAD_REGULAR_INTERVAL_EVENT_CONSUMER* EL_XML_NETWORK_MESSENGER EL_LOGGED_CONSUMER_THREAD* [P] EL_LOGGED_DELEGATING_CONSUMER_THREAD [P, CONSUMER_TYPE -> EL_MANY_TO_ONE_CONSUMER_THREAD [P] create make end] EL_LOGGED_MANY_TO_ONE_CONSUMER_THREAD* [P] EL_ACTION_ARGUMENTS_CONSUMER_THREAD [OPEN_ARGS -> TUPLE create default_create end] EL_BATCH_FILE_PROCESSING_THREAD* EL_LOGGED_BATCH_FILE_PROCESSING_THREAD* EL_DORMANT_ACTION_LOOP_THREAD* EL_REGULAR_INTERVAL_EVENT_PRODUCER EL_LOGGED_REGULAR_INTERVAL_EVENT_PRODUCER EL_RHYTHMIC_ACTION_THREAD* EL_TIMED_COUNT_PRODUCER EL_TIMEOUT EL_LOGGED_TIMEOUT EL_WORK_DISTRIBUTION_THREAD EL_LOGGED_WORK_DISTRIBUTION_THREAD EL_LOGGED_IDENTIFIED_THREAD* SIMPLE_SERVER_THREAD EL_LOGGED_CONSUMER_THREAD* [P] EL_LOGGED_WORK_DISTRIBUTION_THREAD EROS_SERVER_THREAD [TYPES -> TUPLE create default_create end] EL_IDENTIFIED_MAIN_THREAD
Other Features
. /communication/producer-consumer
. /communication/producer-consumer/consumer
. /communication/producer-consumer/distributer
. /communication/producer-consumer/procedure-call
. /communication/producer-consumer/timed
. /communication/producer-consumer/timed/counter
. /communication/producer-consumer/timed/events
. /communication/producer-consumer/timed/procedure-call
Mutex for object conforming to EL_MAKEABLE and createable with call to make
Named thread
Further Information
Click on class link to see client examples.
Shared thread manager
Developer class for code discovery/navigation purposes
Further Information
Click on class link to see client examples.
Thread manager
Saves event indexes for processing in descendant of EL_MAIN_THREAD_EVENT_REQUEST_QUEUE, EL_APPLICATION_IMP.
Event listener main thread proxy
Further Information
Click on class link to see client examples.
Queue to notify an event listener from main application thread. A shared instance is accessible via EL_SHARED_MAIN_THREAD_EVENT_REQUEST_QUEUE
Shared main thread event request queue
Product queue serviced by many consumers
Thread safe queue
Further Information
Click on class link to see descendants.
Consumer of products placed by a separate thread into the queue:
product_queue: EL_THREAD_PRODUCT_QUEUE [P]
Further Information
Click on class link to see descendants.
Product consumer operating in main message_loop_callback GUI thread
Further Information
Click on class link to see client examples.
Consumes the products placed into product queue by another thread
Further Information
Click on class link to see client examples.
Consumer thread that delegates consumption to multiple consumer threads
Further Information
Click on class link to see client examples.
Thread that delegates the work of processing items in a work queue to a pool of consumer threads.
Further Information
Click on class link to see client examples.
Do nothing consumer
Modify or complete a procedures operands as a task distributed across a pool of worker threads.
Further Information
Click on class link to see notes, descendants and client examples.
Descendant of EL_WORK_DISTRIBUTER specialized for functions. G is the return type of functions you wish to execute. For an example on how to use see class SINE_WAVE_INTEGRATION_APP
Further Information
Click on class link to see client examples.
Descendant of EL_WORK_DISTRIBUTER specialized for procedures. G is the target type of the procedures you wish to execute.
Further Information
Click on class link to see notes and client examples.
Object to distribute work of applying routine-agents over a fixed number of CPU processors (threads)
Further Information
Click on class link to see descendants, instructions and client examples.
Consumer of arguments to an action or sequence of actions
Consumer of arguments to an action or sequence of actions using the main GUI thread
Consumer of arguments to an action or sequence of actions using a spawned thread
Batch file processing thread
Further Information
Click on class link to see client examples.
Procedure call consumer
Procedure call consumer main thread
Further Information
Click on class link to see client examples.
Procedure call consumer thread
Further Information
Click on class link to see client examples.
Procedure call queue
Further Information
Click on class link to see client examples.
Separate procedure
Further Information
Click on class link to see client examples.
Repeatedly puts timer event onto a thread queue
Further Information
Click on class link to see client examples.
Count consumer
Count consumer main thread
Further Information
Click on class link to see client examples.
Count consumer thread
Further Information
Click on class link to see client examples.
Timed count producer
Further Information
Click on class link to see client examples.
Main thread regular interval event consumer
Further Information
Click on class link to see client examples.
Regular interval event
Regular interval event constants
Regular interval event consumer
Further Information
Click on class link to see client examples.
Regular interval event processor
Regular interval event producer
Further Information
Click on class link to see client examples.
Thread regular interval event consumer
Further Information
Click on class link to see client examples.
Timed procedure
Further Information
Click on class link to see client examples.
Timed procedure main thread
Further Information
Click on class link to see client examples.
Timed procedure thread
Further Information
Click on class link to see client examples.
Proxy object to (asynchronously) call procedures of BASE_TYPE from an external thread (non GUI thread)
Proxy object to (asynchronously) call procedures of target type T from an another thread
Further Information
Click on class link to see client examples.
Thread safe stack
Thread block
Stateful
Stoppable thread
Suspendable
Thread constants
Continuous action thread
Thread that remains dormant until signalled to resume action loop
Further Information
Click on class link to see client examples.
Thread for file serialization with progress notification
Further Information
Click on class link to see client examples.
Identified main thread
Identified internal_thread
Abstract interface to a thread conforming to IDENTIFIED and EL_NAMED_THREAD
Further Information
Click on class link to see descendants.
Internal thread for class EL_IDENTIFIED_THREAD
Interruptable thread
Further Information
Click on class link to see client examples.
Repeats an action at timed intervals and prompts any registered responder May work but not fully tested.
Further Information
Click on class link to see client examples.
Timeout thread
Further Information
Click on class link to see client examples.
Worker thread
Further Information
Click on class link to see client examples.
Thread that applies the set routine and then waits for a resume prompt to do another one.