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.
1.5.6