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 31 of file microfeedthread.h.
typedef void*(* MicrofeedThreadFunction)(void *data) |
Definition at line 29 of file microfeedthread.h.
typedef struct _MicrofeedThreadPool MicrofeedThreadPool |
Definition at line 22 of file microfeedthread.h.
void microfeed_mutex_free | ( | MicrofeedMutex * | mutex | ) |
Definition at line 322 of file microfeedthread.c.
References microfeed_memory_free(), MicrofeedThreadFunctions::mutex_free, and _MicrofeedMutex::mutex_implementation.
Referenced by microfeed_database_free(), microfeed_feed_free(), and microfeed_main_free().
void microfeed_mutex_lock | ( | MicrofeedMutex * | mutex | ) |
Definition at line 327 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_subscriber(), microfeed_feed_replace_item(), microfeed_feed_send_item_data(), 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 313 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_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 331 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_subscriber(), microfeed_feed_replace_item(), microfeed_feed_send_item_data(), 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 82 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 144 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_thread_unref().
MicrofeedThread* microfeed_thread_get_current | ( | void | ) |
Definition at line 185 of file microfeedthread.c.
References _MicrofeedThread::function, _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().
void microfeed_thread_init | ( | void | ) |
Definition at line 73 of file microfeedthread.c.
References microfeed_mutex_new(), and microfeed_thread_get_current().
void microfeed_thread_join | ( | MicrofeedThread * | thread | ) |
Definition at line 223 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 108 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 113 of file microfeedthread.c.
References _MicrofeedThread::exit_callback, _MicrofeedThread::function, _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 298 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 303 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 227 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 237 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 251 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 256 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 163 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 219 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 69 of file microfeedthread.c.
void microfeed_thread_unref | ( | MicrofeedThread * | thread | ) |
Definition at line 173 of file microfeedthread.c.
References microfeed_mutex_lock(), microfeed_mutex_unlock(), microfeed_thread_free(), _MicrofeedThread::mutex, and _MicrofeedThread::reference_count.