This module can be also utilized outside of the library implementation. In addition, if the default implementation of thread and mutex is not sufficient, you can change the functions with microfeed_thread_set_functions.
typedef struct _MicrofeedMutex MicrofeedMutex |
typedef struct _MicrofeedThread MicrofeedThread |
typedef void(* MicrofeedThreadExitCallback)(MicrofeedThread *thread, void *user_data) |
Definition at line 51 of file microfeedthread.h.
typedef void*(* MicrofeedThreadFunction)(void *data) |
Definition at line 49 of file microfeedthread.h.
typedef struct _MicrofeedThreadPool MicrofeedThreadPool |
Definition at line 42 of file microfeedthread.h.
void microfeed_mutex_free | ( | MicrofeedMutex * | mutex | ) |
Definition at line 353 of file microfeedthread.c.
References microfeed_memory_free(), MicrofeedThreadFunctions::mutex_free, and _MicrofeedMutex::mutex_implementation.
Referenced by microfeed_database_free(), microfeed_feed_free(), microfeed_http_cleanup(), and microfeed_main_free().
void microfeed_mutex_lock | ( | MicrofeedMutex * | mutex | ) |
Definition at line 358 of file microfeedthread.c.
References _MicrofeedMutex::mutex_implementation, and MicrofeedThreadFunctions::mutex_lock.
Referenced by microfeed_database_environment_get_database(), microfeed_database_environment_ref(), microfeed_database_environment_unref(), microfeed_database_free(), microfeed_database_get_data(), microfeed_database_get_data_partial(), microfeed_database_get_index(), microfeed_database_index_get_data(), microfeed_database_index_iterate(), microfeed_database_iterate(), microfeed_database_iterator_free(), microfeed_database_iterator_get(), microfeed_database_iterator_next(), microfeed_database_ref(), microfeed_database_unref(), microfeed_feed_add_subscriber(), microfeed_feed_call_modify_item_callback(), microfeed_feed_get_item(), microfeed_feed_get_subscriber_count(), microfeed_feed_get_weak_reference(), microfeed_feed_iterate(), microfeed_feed_iterate_timeline(), microfeed_feed_iterator_get_item(), microfeed_feed_iterator_jump_and_remove_previous_items(), microfeed_feed_ref(), microfeed_feed_ref_item_data(), microfeed_feed_remove_item(), microfeed_feed_remove_items(), microfeed_feed_remove_subscriber(), microfeed_feed_replace_item(), microfeed_feed_send_item_data(), microfeed_feed_set_item_status(), microfeed_feed_stop_update(), microfeed_feed_unref(), microfeed_feed_unref_item_data(), microfeed_feed_unset_item_status(), microfeed_feed_unset_item_statuses(), microfeed_feed_update(), microfeed_main_add_timeout(), microfeed_main_add_watch(), microfeed_main_exit(), microfeed_main_loop(), microfeed_main_remove_timeout(), microfeed_main_remove_watch(), microfeed_thread_cleanup(), microfeed_thread_free(), microfeed_thread_get_current(), microfeed_thread_new_with_exit_callback(), microfeed_thread_pool_queue_thread_with_exit_callback(), microfeed_thread_ref(), and microfeed_thread_unref().
MicrofeedMutex* microfeed_mutex_new | ( | void | ) |
Definition at line 344 of file microfeedthread.c.
References microfeed_memory_allocate, _MicrofeedMutex::mutex_implementation, and MicrofeedThreadFunctions::mutex_new.
Referenced by microfeed_database_environment_get_database(), microfeed_database_environment_new(), microfeed_feed_new(), microfeed_http_init(), microfeed_main_new_with_dbus_connection(), microfeed_thread_get_current(), microfeed_thread_init(), microfeed_thread_new_with_exit_callback(), microfeed_thread_pool_new_with_exit_callback(), and microfeed_thread_pool_queue_thread_with_exit_callback().
void microfeed_mutex_unlock | ( | MicrofeedMutex * | mutex | ) |
Definition at line 362 of file microfeedthread.c.
References _MicrofeedMutex::mutex_implementation, and MicrofeedThreadFunctions::mutex_unlock.
Referenced by microfeed_database_environment_get_database(), microfeed_database_environment_ref(), microfeed_database_environment_unref(), microfeed_database_free(), microfeed_database_get_data(), microfeed_database_get_data_partial(), microfeed_database_get_index(), microfeed_database_index_get_data(), microfeed_database_index_iterate(), microfeed_database_iterate(), microfeed_database_iterator_free(), microfeed_database_iterator_get(), microfeed_database_iterator_next(), microfeed_database_ref(), microfeed_database_unref(), microfeed_feed_add_subscriber(), microfeed_feed_call_modify_item_callback(), microfeed_feed_get_item(), microfeed_feed_get_subscriber_count(), microfeed_feed_get_weak_reference(), microfeed_feed_iterate(), microfeed_feed_iterate_timeline(), microfeed_feed_iterator_get_item(), microfeed_feed_iterator_jump_and_remove_previous_items(), microfeed_feed_ref(), microfeed_feed_ref_item_data(), microfeed_feed_remove_item(), microfeed_feed_remove_items(), microfeed_feed_remove_subscriber(), microfeed_feed_replace_item(), microfeed_feed_send_item_data(), microfeed_feed_set_item_status(), microfeed_feed_stop_update(), microfeed_feed_unref(), microfeed_feed_unref_item_data(), microfeed_feed_unset_item_status(), microfeed_feed_unset_item_statuses(), microfeed_feed_update(), microfeed_main_add_timeout(), microfeed_main_add_watch(), microfeed_main_exit(), microfeed_main_loop(), microfeed_main_remove_timeout(), microfeed_main_remove_watch(), microfeed_thread_cleanup(), microfeed_thread_free(), microfeed_thread_get_current(), microfeed_thread_new_with_exit_callback(), microfeed_thread_pool_queue_thread_with_exit_callback(), microfeed_thread_ref(), and microfeed_thread_unref().
void microfeed_thread_cleanup | ( | void | ) |
Definition at line 102 of file microfeedthread.c.
References microfeed_mutex_lock(), microfeed_mutex_unlock(), microfeed_thread_join(), _MicrofeedThread::next, MicrofeedThreadFunctions::thread_get_current, and _MicrofeedThread::thread_implementation.
void microfeed_thread_free | ( | MicrofeedThread * | thread | ) |
Definition at line 166 of file microfeedthread.c.
References microfeed_memory_free(), microfeed_mutex_lock(), microfeed_mutex_unlock(), _MicrofeedThread::next, _MicrofeedThread::previous, MicrofeedThreadFunctions::thread_free, and _MicrofeedThread::thread_implementation.
Referenced by microfeed_publisher_free(), and microfeed_thread_unref().
MicrofeedThread* microfeed_thread_get_current | ( | void | ) |
Definition at line 209 of file microfeedthread.c.
References _MicrofeedThread::function, _MicrofeedThread::id, _MicrofeedThread::in_data, microfeed_memory_allocate, microfeed_mutex_lock(), microfeed_mutex_new(), microfeed_mutex_unlock(), _MicrofeedThread::mutex, _MicrofeedThread::next, _MicrofeedThread::out_data, _MicrofeedThread::previous, _MicrofeedThread::reference_count, MicrofeedThreadFunctions::thread_get_current, and _MicrofeedThread::thread_implementation.
Referenced by microfeed_thread_init().
unsigned long microfeed_thread_get_id | ( | MicrofeedThread * | thread | ) |
void microfeed_thread_init | ( | void | ) |
Definition at line 93 of file microfeedthread.c.
References microfeed_mutex_new(), and microfeed_thread_get_current().
void microfeed_thread_join | ( | MicrofeedThread * | thread | ) |
Definition at line 248 of file microfeedthread.c.
References _MicrofeedThread::thread_implementation, and MicrofeedThreadFunctions::thread_join.
Referenced by microfeed_thread_cleanup().
MicrofeedThread* microfeed_thread_new | ( | MicrofeedThreadFunction | function, | |
void * | data | |||
) |
Definition at line 128 of file microfeedthread.c.
References microfeed_thread_new_with_exit_callback().
Referenced by microfeed_publisher_start_singleton_update_thread().
MicrofeedThread* microfeed_thread_new_with_exit_callback | ( | MicrofeedThreadFunction | function, | |
void * | data, | |||
MicrofeedThreadExitCallback | exit_callback, | |||
void * | user_data | |||
) |
Definition at line 133 of file microfeedthread.c.
References _MicrofeedThread::exit_callback, _MicrofeedThread::function, _MicrofeedThread::id, _MicrofeedThread::in_data, microfeed_memory_allocate, microfeed_mutex_lock(), microfeed_mutex_new(), microfeed_mutex_unlock(), _MicrofeedThread::mutex, _MicrofeedThread::next, _MicrofeedThread::out_data, _MicrofeedThread::previous, _MicrofeedThread::reference_count, _MicrofeedThread::thread_implementation, MicrofeedThreadFunctions::thread_new, and _MicrofeedThread::user_data.
Referenced by microfeed_thread_new().
unsigned int microfeed_thread_pool_get_started_thread_count | ( | MicrofeedThreadPool * | thread_pool | ) |
Definition at line 329 of file microfeedthread.c.
References _MicrofeedThreadPool::started_threads.
Referenced by microfeed_publisher_remove_subscriber().
unsigned int microfeed_thread_pool_get_waiting_thread_count | ( | MicrofeedThreadPool * | thread_pool | ) |
Definition at line 334 of file microfeedthread.c.
References microfeed_store_get_size(), and _MicrofeedThreadPool::waiting_threads.
MicrofeedThreadPool* microfeed_thread_pool_new | ( | unsigned int | maximum_thread_count | ) |
Definition at line 258 of file microfeedthread.c.
References microfeed_thread_pool_new_with_exit_callback().
MicrofeedThreadPool* microfeed_thread_pool_new_with_exit_callback | ( | unsigned int | maximum_thread_count, | |
MicrofeedThreadExitCallback | exit_callback, | |||
void * | user_data | |||
) |
..
An exit function is called when a physical thread exits.
Definition at line 268 of file microfeedthread.c.
References _MicrofeedThreadPool::exit_callback, _MicrofeedThreadPool::max_threads, microfeed_memory_allocate, microfeed_mutex_new(), microfeed_store_compare_keys_direct(), microfeed_store_get_key_direct(), microfeed_store_new_unsorted(), _MicrofeedThreadPool::mutex, _MicrofeedThreadPool::user_data, and _MicrofeedThreadPool::waiting_threads.
Referenced by microfeed_publisher_new(), and microfeed_thread_pool_new().
MicrofeedThread* microfeed_thread_pool_queue_thread | ( | MicrofeedThreadPool * | thread_pool, | |
MicrofeedThreadFunction | function, | |||
void * | data | |||
) |
Definition at line 282 of file microfeedthread.c.
References microfeed_thread_pool_queue_thread_with_exit_callback().
Referenced by microfeed_publisher_queue_thread().
MicrofeedThread* microfeed_thread_pool_queue_thread_with_exit_callback | ( | MicrofeedThreadPool * | thread_pool, | |
MicrofeedThreadFunction | function, | |||
void * | data, | |||
MicrofeedThreadExitCallback | exit_callback, | |||
void * | user_data | |||
) |
Definition at line 287 of file microfeedthread.c.
References _MicrofeedThread::exit_callback, _MicrofeedThread::function, _MicrofeedThread::in_data, _MicrofeedThreadPool::max_threads, microfeed_memory_allocate, microfeed_mutex_lock(), microfeed_mutex_new(), microfeed_mutex_unlock(), microfeed_store_insert(), _MicrofeedThreadPool::mutex, _MicrofeedThread::mutex, _MicrofeedThread::next, _MicrofeedThread::out_data, _MicrofeedThread::previous, _MicrofeedThread::reference_count, _MicrofeedThreadPool::started_threads, _MicrofeedThread::thread_implementation, MicrofeedThreadFunctions::thread_new, _MicrofeedThread::thread_pool, _MicrofeedThread::user_data, and _MicrofeedThreadPool::waiting_threads.
Referenced by microfeed_thread_pool_queue_thread().
void microfeed_thread_pool_set_maximum_thread_count | ( | MicrofeedThreadPool * | thread_pool, | |
unsigned int | maximum_thread_count | |||
) |
MicrofeedThread* microfeed_thread_ref | ( | MicrofeedThread * | thread | ) |
Definition at line 187 of file microfeedthread.c.
References microfeed_mutex_lock(), microfeed_mutex_unlock(), _MicrofeedThread::mutex, and _MicrofeedThread::reference_count.
void microfeed_thread_send_signal | ( | MicrofeedThread * | thread, | |
int | signal_number | |||
) |
Definition at line 244 of file microfeedthread.c.
References _MicrofeedThread::thread_implementation, and MicrofeedThreadFunctions::thread_send_signal.
void microfeed_thread_set_functions | ( | MicrofeedThreadFunctions * | thread_functions | ) |
Sets the functions that implements the thread and mutex operations.
thread_functions | A structure containing new implementions. |
Definition at line 89 of file microfeedthread.c.
void microfeed_thread_unref | ( | MicrofeedThread * | thread | ) |
Definition at line 197 of file microfeedthread.c.
References microfeed_mutex_lock(), microfeed_mutex_unlock(), microfeed_thread_free(), _MicrofeedThread::mutex, and _MicrofeedThread::reference_count.