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 33 of file microfeedthread.h.
typedef void*(* MicrofeedThreadFunction)(void *data) |
Definition at line 31 of file microfeedthread.h.
typedef struct _MicrofeedThreadPool MicrofeedThreadPool |
Definition at line 24 of file microfeedthread.h.
void microfeed_mutex_free | ( | MicrofeedMutex * | mutex | ) |
Definition at line 335 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 340 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 326 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 344 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 84 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 148 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 191 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 75 of file microfeedthread.c.
References microfeed_mutex_new(), and microfeed_thread_get_current().
void microfeed_thread_join | ( | MicrofeedThread * | thread | ) |
Definition at line 230 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 110 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 115 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 311 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 316 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 240 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 250 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 264 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 269 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 169 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 226 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 71 of file microfeedthread.c.
void microfeed_thread_unref | ( | MicrofeedThread * | thread | ) |
Definition at line 179 of file microfeedthread.c.
References microfeed_mutex_lock(), microfeed_mutex_unlock(), microfeed_thread_free(), _MicrofeedThread::mutex, and _MicrofeedThread::reference_count.