|
Blender V4.3
|
#include <cerrno>#include <cstdlib>#include <cstring>#include "MEM_guardedalloc.h"#include "BLI_gsqueue.h"#include "BLI_listbase.h"#include "BLI_system.h"#include "BLI_task.h"#include "BLI_threads.h"#include "BLI_time.h"#include <sys/time.h>#include <unistd.h>#include "atomic_ops.h"Go to the source code of this file.
Classes | |
| struct | ThreadSlot |
| struct | TicketMutex |
| struct | ThreadQueue |
Macros | |
| #define | RE_MAX_THREAD BLENDER_MAX_THREADS |
Variables | |
| static pthread_mutex_t | _image_lock = PTHREAD_MUTEX_INITIALIZER |
| static pthread_mutex_t | _image_draw_lock = PTHREAD_MUTEX_INITIALIZER |
| static pthread_mutex_t | _viewer_lock = PTHREAD_MUTEX_INITIALIZER |
| static pthread_mutex_t | _custom1_lock = PTHREAD_MUTEX_INITIALIZER |
| static pthread_mutex_t | _nodes_lock = PTHREAD_MUTEX_INITIALIZER |
| static pthread_mutex_t | _movieclip_lock = PTHREAD_MUTEX_INITIALIZER |
| static pthread_mutex_t | _colormanage_lock = PTHREAD_MUTEX_INITIALIZER |
| static pthread_mutex_t | _fftw_lock = PTHREAD_MUTEX_INITIALIZER |
| static pthread_mutex_t | _view3d_lock = PTHREAD_MUTEX_INITIALIZER |
| static pthread_t | mainid |
| static uint | thread_levels = 0 |
| static int | threads_override_num = 0 |
| #define RE_MAX_THREAD BLENDER_MAX_THREADS |
Definition at line 104 of file threads.cc.
Referenced by BLI_system_thread_count(), and BLI_threadpool_init().
Amount of available threads.
Definition at line 146 of file threads.cc.
References LISTBASE_FOREACH.
Referenced by background_task_pool_run(), and ZstdWriteWrap::write().
| void BLI_condition_end | ( | ThreadCondition * | cond | ) |
Definition at line 602 of file threads.cc.
Referenced by ZstdWriteWrap::close(), IMB_thumb_locks_release(), screen_opengl_render_end(), seq_prefetch_free(), and blender::compositor::ExecutionSystem::~ExecutionSystem().
| void BLI_condition_init | ( | ThreadCondition * | cond | ) |
Definition at line 577 of file threads.cc.
Referenced by blender::compositor::ExecutionSystem::ExecutionSystem(), IMB_thumb_locks_acquire(), ZstdWriteWrap::open(), screen_opengl_render_init(), seq_prefetch_start_ex(), and sequencer_preview_add_sound().
| void BLI_condition_notify_all | ( | ThreadCondition * | cond | ) |
Definition at line 597 of file threads.cc.
Referenced by IMB_thumb_path_unlock(), and write_result().
| void BLI_condition_notify_one | ( | ThreadCondition * | cond | ) |
Definition at line 592 of file threads.cc.
Referenced by blender::compositor::ExecutionSystem::execute_work(), free_read_sound_waveform_task(), seq_prefetch_resume(), SEQ_prefetch_stop(), and sequencer_preview_add_sound().
| void BLI_condition_wait | ( | ThreadCondition * | cond, |
| ThreadMutex * | mutex ) |
Definition at line 582 of file threads.cc.
References mutex.
Referenced by blender::compositor::ExecutionSystem::execute_work(), preview_startjob(), schedule_write_result(), screen_opengl_render_end(), and seq_prefetch_do_suspend().
| void BLI_condition_wait_global_mutex | ( | ThreadCondition * | cond, |
| const int | type ) |
Definition at line 587 of file threads.cc.
References global_mutex_from_type().
Referenced by IMB_thumb_path_lock().
| ThreadMutex * BLI_mutex_alloc | ( | void | ) |
Definition at line 365 of file threads.cc.
References BLI_mutex_init(), MEM_callocN, and mutex.
Referenced by sequencer_preview_add_sound().
| void BLI_mutex_end | ( | ThreadMutex * | mutex | ) |
Definition at line 360 of file threads.cc.
References mutex.
Referenced by BKE_image_pool_free(), blf_font_exit(), BLI_mutex_free(), BLI_spin_end(), BLI_task_pool_free(), bvhcache_free(), ccgDM_release(), ZstdWriteWrap::close(), COM_deinitialize(), filelist_readjob_free(), gpu_batch_presets_exit(), gpu_pass_free(), image_runtime_free_data(), RE_engine_free(), screen_opengl_render_end(), seq_cache_destruct(), seq_disk_cache_free(), seq_prefetch_free(), BaseRender::~BaseRender(), and blender::compositor::ExecutionSystem::~ExecutionSystem().
| void BLI_mutex_free | ( | ThreadMutex * | mutex | ) |
Definition at line 372 of file threads.cc.
References BLI_mutex_end(), MEM_freeN(), and mutex.
Referenced by free_preview_job().
| void BLI_mutex_init | ( | ThreadMutex * | mutex | ) |
Definition at line 340 of file threads.cc.
References mutex.
Referenced by BKE_image_pool_new(), blf_font_init(), BLI_mempool_create(), BLI_mutex_alloc(), BLI_spin_init(), bvhcache_init(), COM_execute(), blender::compositor::ExecutionSystem::ExecutionSystem(), filelist_readjob_start(), getCCGDerivedMesh(), gpu_batch_presets_init(), GPU_generate_pass(), image_runtime_reset(), image_runtime_reset_on_copy(), ZstdWriteWrap::open(), RE_engine_create(), screen_opengl_render_init(), seq_cache_create(), seq_disk_cache_create(), seq_prefetch_start_ex(), and task_pool_create_ex().
| void BLI_mutex_lock | ( | ThreadMutex * | mutex | ) |
Definition at line 345 of file threads.cc.
References mutex.
Referenced by BKE_collection_object_cache_get(), BKE_collection_object_cache_instanced_get(), BKE_image_acquire_ibuf(), BKE_image_acquire_multilayer_view_ibuf(), BKE_image_acquire_renderresult(), BKE_image_ensure_viewer_views(), BKE_image_file_format_set(), BKE_image_free_anim_ibufs(), BKE_image_free_buffers_ex(), BKE_image_get_first_ibuf(), BKE_image_get_ibuf_with_name(), BKE_image_has_ibuf(), BKE_image_has_loaded_ibuf(), BKE_image_is_dirty_writable(), BKE_image_merge(), BKE_image_multilayer_stamp_info_callback(), BKE_image_pool_acquire_ibuf(), BKE_image_pool_free(), BKE_image_release_ibuf(), BKE_image_release_renderresult(), BKE_image_signal(), blf_cache_face_requester(), blf_ensure_face(), blf_font_free(), BLI_spin_lock(), bvhcache_find(), ccgDM_copyFinalCornerEdgeArray(), colorspace_from_scene_linear_cpu_processor(), colorspace_to_scene_linear_cpu_processor(), COM_deinitialize(), COM_execute(), display_from_scene_linear_processor(), display_to_scene_linear_processor(), draw_image_cache(), blender::draw::DRW_cache_free_old_subdiv(), blender::draw::DRW_subdiv_cache_free(), engine_render_view_layer(), evaluate_driver_python(), blender::compositor::ExecutionSystem::execute_work(), filelist_readjob_append_entries(), filelist_readjob_startjob(), filelist_readjob_update(), free_read_sound_waveform_task(), give_parvert(), gpu_batch_presets_register(), gpu_batch_presets_unregister(), gpu_free_unused_buffers(), GPU_pass_async_compilation_try_finalize(), GPU_pass_begin_async_compilation(), GPU_pass_compile(), image_free_gpu(), image_mem_size(), IMB_colormanagement_color_picking_to_scene_linear_v3(), IMB_colormanagement_scene_linear_to_color_picking_v3(), blender::seq::media_presence_free(), blender::seq::media_presence_invalidate_sound(), blender::seq::media_presence_invalidate_strip(), blender::seq::media_presence_is_missing(), blender::seq::media_presence_set_missing(), mempool_asan_lock(), preview_startjob(), RE_engine_draw_acquire(), RE_engine_gpu_context_enable(), RE_engine_gpu_context_lock(), RE_engine_update_render_passes(), RE_point_density_cache(), RE_point_density_sample(), RNA_property_pointer_get(), schedule_write_result(), screen_opengl_render_end(), seq_cache_create(), seq_cache_lock(), seq_disk_cache_enforce_limits(), seq_disk_cache_invalidate(), seq_disk_cache_read_file(), seq_disk_cache_write_file(), seq_prefetch_do_suspend(), SEQ_render_give_ibuf(), sequencer_preview_add_sound(), stats_background(), view_layer_bases_hash_create(), ZstdWriteWrap::write(), and write_result().
| bool BLI_mutex_trylock | ( | ThreadMutex * | mutex | ) |
Definition at line 355 of file threads.cc.
References mutex.
| void BLI_mutex_unlock | ( | ThreadMutex * | mutex | ) |
Definition at line 350 of file threads.cc.
References mutex.
Referenced by BKE_collection_object_cache_get(), BKE_collection_object_cache_instanced_get(), BKE_image_acquire_ibuf(), BKE_image_acquire_multilayer_view_ibuf(), BKE_image_acquire_renderresult(), BKE_image_ensure_viewer_views(), BKE_image_file_format_set(), BKE_image_free_anim_ibufs(), BKE_image_free_buffers_ex(), BKE_image_get_first_ibuf(), BKE_image_get_ibuf_with_name(), BKE_image_has_ibuf(), BKE_image_has_loaded_ibuf(), BKE_image_is_dirty_writable(), BKE_image_merge(), BKE_image_multilayer_stamp_info_callback(), BKE_image_pool_acquire_ibuf(), BKE_image_pool_free(), BKE_image_release_ibuf(), BKE_image_release_renderresult(), BKE_image_signal(), blf_cache_face_requester(), blf_ensure_face(), blf_font_free(), BLI_spin_unlock(), bvhcache_find(), bvhcache_unlock(), ccgDM_copyFinalCornerEdgeArray(), colorspace_from_scene_linear_cpu_processor(), colorspace_to_scene_linear_cpu_processor(), COM_deinitialize(), COM_execute(), display_from_scene_linear_processor(), display_to_scene_linear_processor(), draw_image_cache(), blender::draw::DRW_cache_free_old_subdiv(), blender::draw::DRW_subdiv_cache_free(), engine_render_view_layer(), evaluate_driver_python(), blender::compositor::ExecutionSystem::execute_work(), filelist_readjob_append_entries(), filelist_readjob_startjob(), filelist_readjob_update(), free_read_sound_waveform_task(), give_parvert(), gpu_batch_presets_register(), gpu_batch_presets_unregister(), gpu_free_unused_buffers(), GPU_pass_async_compilation_try_finalize(), GPU_pass_begin_async_compilation(), GPU_pass_compile(), image_free_gpu(), image_mem_size(), IMB_colormanagement_color_picking_to_scene_linear_v3(), IMB_colormanagement_scene_linear_to_color_picking_v3(), blender::seq::media_presence_free(), blender::seq::media_presence_invalidate_sound(), blender::seq::media_presence_invalidate_strip(), blender::seq::media_presence_is_missing(), blender::seq::media_presence_set_missing(), mempool_asan_unlock(), preview_startjob(), RE_engine_draw_acquire(), RE_engine_draw_release(), RE_engine_gpu_context_disable(), RE_engine_gpu_context_unlock(), RE_engine_update_render_passes(), RE_point_density_cache(), RE_point_density_sample(), RNA_property_pointer_get(), schedule_write_result(), screen_opengl_render_end(), seq_cache_create(), seq_cache_unlock(), seq_disk_cache_create(), seq_disk_cache_enforce_limits(), seq_disk_cache_invalidate(), seq_disk_cache_read_file(), seq_disk_cache_write_file(), seq_prefetch_do_suspend(), SEQ_render_give_ibuf(), sequencer_preview_add_sound(), stats_background(), view_layer_bases_hash_create(), ZstdWriteWrap::write(), and write_result().
| ThreadRWMutex * BLI_rw_mutex_alloc | ( | void | ) |
Definition at line 487 of file threads.cc.
References BLI_rw_mutex_init(), MEM_callocN, and mutex.
Referenced by BKE_fluid_modifier_create_type_data(), and BKE_modifier_blend_read_data().
| void BLI_rw_mutex_end | ( | ThreadRWMutex * | mutex | ) |
Definition at line 482 of file threads.cc.
References mutex.
Referenced by BLI_rw_mutex_free(), ccgDM_release(), and BaseRender::~BaseRender().
| void BLI_rw_mutex_free | ( | ThreadRWMutex * | mutex | ) |
Definition at line 495 of file threads.cc.
References BLI_rw_mutex_end(), MEM_freeN(), and mutex.
Referenced by fluid_modifier_freeDomain().
| void BLI_rw_mutex_init | ( | ThreadRWMutex * | mutex | ) |
Definition at line 462 of file threads.cc.
References mutex.
Referenced by BLI_rw_mutex_alloc(), and getCCGDerivedMesh().
| void BLI_rw_mutex_lock | ( | ThreadRWMutex * | mutex, |
| int | mode ) |
Definition at line 467 of file threads.cc.
References mutex, and THREAD_LOCK_READ.
Referenced by ccgDM_get_vert_data_layer(), do_render_compositor(), do_render_sequencer(), fluid_modifier_reset_ex(), psys_update_particle_bvhtree(), RE_AcquireResultImage(), RE_AcquireResultImageViews(), RE_AcquireResultRead(), RE_AcquireResultWrite(), RE_engine_render(), re_ensure_passes_allocated_thread_safe(), RE_InitState(), RE_ReadRenderResult(), render_init_from_main(), render_result_uncrop(), renderresult_set_passes_metadata(), sph_evaluate_func(), vfont_get_data(), and vfont_to_curve().
| void BLI_rw_mutex_unlock | ( | ThreadRWMutex * | mutex | ) |
Definition at line 477 of file threads.cc.
References mutex.
Referenced by ccgDM_get_vert_data_layer(), do_render_compositor(), do_render_sequencer(), fluid_modifier_reset_ex(), psys_update_particle_bvhtree(), RE_engine_render(), re_ensure_passes_allocated_thread_safe(), RE_InitState(), RE_ReadRenderResult(), RE_ReleaseResult(), RE_ReleaseResultImage(), RE_ReleaseResultImageViews(), render_init_from_main(), render_result_uncrop(), renderresult_set_passes_metadata(), sph_evaluate_func(), vfont_get_data(), and vfont_to_curve().
| void BLI_spin_end | ( | SpinLock * | spin | ) |
Definition at line 445 of file threads.cc.
References BLI_mutex_end(), spin, and UNUSED_VARS.
Referenced by BKE_autotrack_context_free(), BKE_cachefiles_exit(), BKE_main_destroy(), do_multires_bake(), do_sequence_proxy(), dynamics_step(), ED_image_paint_tile_lock_end(), GPU_pass_cache_free(), imb_mmap_lock_exit(), imb_refcounter_lock_exit(), lineart_destroy_render_data(), lineart_end_bounding_area_recursive(), lineart_free_bounding_area_memory(), project_paint_end(), screen_opengl_render_end(), sound_free_data(), start_prefetch_threads(), tracking_image_accessor_destroy(), tracks_map_free(), and blender::deg::Depsgraph::~Depsgraph().
| void BLI_spin_init | ( | SpinLock * | spin | ) |
Definition at line 391 of file threads.cc.
References BLI_mutex_init(), and spin.
Referenced by BKE_autotrack_context_new(), BKE_cachefiles_init(), BKE_main_init(), BKE_sound_new_file(), blender::deg::Depsgraph::Depsgraph(), do_multires_bake(), do_sequence_proxy(), dynamics_step(), ED_image_paint_tile_lock_init(), GPU_pass_cache_init(), imb_mmap_lock_init(), imb_refcounter_lock_init(), lineart_bounding_area_split(), lineart_create_render_buffer_v3(), lineart_main_bounding_area_make_initial(), lineart_main_try_generate_shadow_v3(), proj_paint_state_thread_init(), screen_opengl_render_init(), sound_blend_read_data(), sound_copy_data(), start_prefetch_threads(), tracking_image_accessor_new(), and tracks_map_new().
| void BLI_spin_lock | ( | SpinLock * | spin | ) |
Definition at line 405 of file threads.cc.
References BLI_mutex_lock(), and spin.
Referenced by BKE_autotrack_context_step(), BKE_autotrack_context_sync(), BKE_cachefile_reader_free(), BKE_cachefile_reader_open(), BKE_main_lock(), cachefile_handle_free(), clear_sound_waveform_loading_tag(), do_multires_bake_thread(), ED_image_paint_tile_push(), GPU_generate_pass(), GPU_pass_acquire(), GPU_pass_cache_free(), GPU_pass_cache_garbage_collect(), gpu_pass_cache_insert_after(), gpu_pass_cache_lookup(), gpu_pass_cache_resolve_collision(), GPU_pass_release(), IMB_freeImBuf(), IMB_makeSingleUser(), imb_mmap_lock(), IMB_refImBuf(), lineart_bounding_area_link_triangle(), lineart_discard_segment(), lineart_geometry_object_load(), lineart_give_segment(), lineart_give_shadow_segment(), lineart_mem_acquire_thread(), lineart_occlusion_make_task_info(), lineart_schedule_new_triangle_task(), multires_bake_queue_next_tri(), prefetch_thread_next_frame(), project_paint_undo_subtiles(), proxy_thread_next_frame(), screen_opengl_render_anim_step(), tracks_map_merge(), update_courant_num(), waveform_job_start_if_needed(), and write_result().
| void BLI_spin_unlock | ( | SpinLock * | spin | ) |
Definition at line 430 of file threads.cc.
References BLI_mutex_unlock(), and spin.
Referenced by BKE_autotrack_context_step(), BKE_autotrack_context_sync(), BKE_cachefile_reader_free(), BKE_cachefile_reader_open(), BKE_main_unlock(), cachefile_handle_free(), clear_sound_waveform_loading_tag(), do_multires_bake_thread(), ED_image_paint_tile_push(), GPU_generate_pass(), GPU_pass_acquire(), GPU_pass_cache_free(), GPU_pass_cache_garbage_collect(), gpu_pass_cache_insert_after(), gpu_pass_cache_lookup(), gpu_pass_cache_resolve_collision(), GPU_pass_release(), IMB_freeImBuf(), IMB_makeSingleUser(), imb_mmap_unlock(), IMB_refImBuf(), lineart_bounding_area_link_triangle(), lineart_discard_segment(), lineart_geometry_object_load(), lineart_give_segment(), lineart_give_shadow_segment(), lineart_mem_acquire_thread(), lineart_occlusion_make_task_info(), lineart_schedule_new_triangle_task(), multires_bake_queue_next_tri(), prefetch_thread_next_frame(), project_paint_undo_subtiles(), proxy_thread_next_frame(), screen_opengl_render_anim_step(), tracks_map_merge(), update_courant_num(), waveform_job_start_if_needed(), and write_result().
| int BLI_system_num_threads_override_get | ( | void | ) |
Definition at line 294 of file threads.cc.
References threads_override_num.
Referenced by BKE_render_num_threads(), BLI_task_scheduler_init(), and OIIO_init().
| void BLI_system_num_threads_override_set | ( | int | num | ) |
Definition at line 289 of file threads.cc.
References threads_override_num.
Referenced by arg_handle_threads_set().
| int BLI_system_thread_count | ( | void | ) |
Definition at line 253 of file threads.cc.
References CLAMP, int, len, LIKELY, RE_MAX_THREAD, and threads_override_num.
Referenced by BKE_render_num_threads(), BLI_task_scheduler_init(), blender::gpu::VKBackend::capabilities_init(), blender::fn::multi_function::compute_grain_size(), blender::array_utils::count_indices(), do_movie_proxy(), do_multires_bake(), blender::index_mask::IndexMask::from_indices(), blender::bke::calc_edges::get_parallel_maps_count(), imb_initopenexr(), blender::fftw::initialize_float(), ZstdWriteWrap::open(), psys_tasks_create(), and tracking_cameraIntrinscisOptionsFromTracking().
| int BLI_thread_is_main | ( | void | ) |
Definition at line 179 of file threads.cc.
References mainid.
Referenced by BKE_icon_geom_ensure(), BKE_icon_geom_from_file(), BKE_icon_geom_from_memory(), BKE_icon_get(), BKE_icon_gplayer_color_ensure(), BKE_icon_id_delete(), BKE_icon_id_ensure(), BKE_icons_free(), BKE_icons_init(), BKE_image_free_gputextures(), BKE_image_free_unused_gpu_textures(), BKE_previewimg_cached_ensure(), BKE_previewimg_cached_get(), BKE_previewimg_cached_release(), BKE_previewimg_cached_thumbnail_read(), BLI_change_working_dir(), BLT_translate(), BPY_context_update(), ctx_data_get(), ctx_wm_python_context_get(), blender::gpu::VKDevice::debug_print(), blender::gpu::VKDevice::discard_pool_for_current_thread(), DRW_blender_gpu_render_context_enable(), DRW_gpu_context_activate(), DRW_gpu_context_destroy(), DRW_gpu_context_disable_ex(), DRW_gpu_context_release(), DRW_system_gpu_render_context_enable(), ED_preview_ensure_dbase(), ED_render_id_flush_update(), ED_render_scene_update(), engine_depsgraph_free(), blender::render::RealtimeCompositor::execute(), GPU_batch_preset_sphere(), GPU_batch_preset_sphere_wire(), icon_gplayer_color_ensure_create_icon(), icon_id_ensure_create_icon(), image_init_after_load(), blender::eevee::LightBake::LightBake(), RE_engine_gpu_context_create(), RE_FreeUnusedGPUResources(), RE_system_gpu_context_ensure(), RE_system_gpu_context_free(), blender::gpu::VKBackend::render_end(), SEQ_effect_text_font_load(), seq_render_scene_strip(), blender::eevee::LightBake::update(), wm_file_write(), wm_job_end(), wm_surface_reset_drawable(), WM_system_gpu_context_create(), wm_window_events_process(), wm_window_reset_drawable(), blender::eevee::LightBake::~LightBake(), and blender::render::RealtimeCompositor::~RealtimeCompositor().
| void BLI_thread_lock | ( | int | type | ) |
Definition at line 328 of file threads.cc.
References global_mutex_from_type().
Referenced by accessor_get_ibuf(), BKE_image_ensure_viewer_views(), BKE_movieclip_get_cache_segments(), BKE_movieclip_has_cached_frame(), BKE_movieclip_put_frame_if_possible(), colorfn(), blender::compositor::CompositorOperation::deinit_execution(), blender::ed::space_node::draw_nodespace_back_pix(), image_acquire_ibuf(), image_get_render_result(), image_main_region_draw(), image_mipmap_test(), blender::nodes::node_geo_image_texture_cc::ImageFieldsFunction::ImageFieldsFunction(), IMB_display_buffer_acquire(), IMB_display_buffer_release(), imb_partial_display_buffer_update_ex(), IMB_thumb_locks_acquire(), IMB_thumb_locks_release(), IMB_thumb_path_lock(), IMB_thumb_path_unlock(), movieclip_build_proxy_ibuf(), movieclip_get_postprocessed_ibuf(), ntreeTexExecTree(), blender::render::Context::output_to_render_result(), project_paint_face_init(), view3d_stereo3d_setup(), and blender::render::Context::viewer_output_to_viewer_image().
| void BLI_thread_queue_free | ( | ThreadQueue * | queue | ) |
Definition at line 632 of file threads.cc.
References BLI_gsqueue_free(), and MEM_freeN().
Referenced by background_task_pool_free(), filelist_cache_previews_free(), blender::compositor::threading_model_queue_stop(), and PreviewLoadJob::~PreviewLoadJob().
| ThreadQueue * BLI_thread_queue_init | ( | void | ) |
Definition at line 618 of file threads.cc.
References BLI_gsqueue_new(), MEM_callocN, and ThreadQueue::queue.
Referenced by background_task_pool_create(), filelist_cache_preview_ensure_running(), and blender::compositor::threading_model_queue_start().
| bool BLI_thread_queue_is_empty | ( | ThreadQueue * | queue | ) |
Definition at line 759 of file threads.cc.
References BLI_gsqueue_is_empty().
Referenced by filelist_cache_previews_update().
| int BLI_thread_queue_len | ( | ThreadQueue * | queue | ) |
Definition at line 748 of file threads.cc.
References BLI_gsqueue_len(), and size().
| void BLI_thread_queue_nowait | ( | ThreadQueue * | queue | ) |
Definition at line 770 of file threads.cc.
Referenced by background_task_pool_cancel(), background_task_pool_work_and_wait(), filelist_cache_previews_free(), and blender::compositor::threading_model_queue_stop().
| void * BLI_thread_queue_pop | ( | ThreadQueue * | queue | ) |
Definition at line 655 of file threads.cc.
References BLI_gsqueue_is_empty(), and BLI_gsqueue_pop().
Referenced by background_task_pool_cancel(), background_task_run(), filelist_cache_previews_update(), and blender::compositor::threading_model_queue_execute().
| void * BLI_thread_queue_pop_timeout | ( | ThreadQueue * | queue, |
| int | ms ) |
Definition at line 714 of file threads.cc.
References BLI_gsqueue_is_empty(), BLI_gsqueue_pop(), BLI_time_now_seconds(), and wait_timeout().
Referenced by filelist_cache_previews_clear().
| void BLI_thread_queue_push | ( | ThreadQueue * | queue, |
| void * | work ) |
Definition at line 644 of file threads.cc.
References BLI_gsqueue_push().
Referenced by background_task_pool_run(), filelist_cache_preview_runf(), filelist_cache_previews_push(), PreviewLoadJob::push_load_request(), and blender::compositor::threading_model_queue_schedule().
| void BLI_thread_queue_wait_finish | ( | ThreadQueue * | queue | ) |
Definition at line 781 of file threads.cc.
References BLI_gsqueue_is_empty().
Referenced by background_task_pool_work_and_wait(), and blender::compositor::threading_model_queue_finish().
| void BLI_thread_unlock | ( | int | type | ) |
Definition at line 333 of file threads.cc.
References global_mutex_from_type().
Referenced by accessor_get_ibuf(), BKE_image_ensure_viewer_views(), BKE_image_release_ibuf(), BKE_movieclip_get_cache_segments(), BKE_movieclip_has_cached_frame(), BKE_movieclip_put_frame_if_possible(), colorfn(), blender::compositor::CompositorOperation::deinit_execution(), blender::ed::space_node::draw_nodespace_back_pix(), image_main_region_draw(), image_mipmap_test(), blender::nodes::node_geo_image_texture_cc::ImageFieldsFunction::ImageFieldsFunction(), IMB_display_buffer_acquire(), IMB_display_buffer_release(), imb_partial_display_buffer_update_ex(), IMB_thumb_locks_acquire(), IMB_thumb_locks_release(), IMB_thumb_path_lock(), IMB_thumb_path_unlock(), movieclip_build_proxy_ibuf(), movieclip_get_postprocessed_ibuf(), ntreeTexExecTree(), blender::render::Context::output_to_render_result(), project_paint_face_init(), view3d_stereo3d_setup(), and blender::render::Context::viewer_output_to_viewer_image().
| void BLI_threadapi_exit | ( | void | ) |
Definition at line 119 of file threads.cc.
Referenced by blender::tests::ChangeWorkingDirectoryTest::TearDown(), BlendfileLoadingBaseTest::TearDownTestCase(), TEST(), TEST(), TEST(), and WM_exit_ex().
| void BLI_threadapi_init | ( | void | ) |
This is run once at startup.
Definition at line 114 of file threads.cc.
References mainid.
Referenced by main(), blender::tests::ChangeWorkingDirectoryTest::SetUp(), BlendfileLoadingBaseTest::SetUpTestCase(), TEST(), TEST(), and TEST().
Returns thread number, for sample patterns or threadsafe tables.
Definition at line 159 of file threads.cc.
References LISTBASE_FOREACH.
| void BLI_threadpool_clear | ( | ListBase * | threadbase | ) |
Definition at line 223 of file threads.cc.
References LISTBASE_FOREACH.
Referenced by background_task_pool_work_and_wait().
| void BLI_threadpool_end | ( | ListBase * | threadbase | ) |
Definition at line 234 of file threads.cc.
References BLI_freelistN(), BLI_listbase_is_empty(), and LISTBASE_FOREACH.
Referenced by background_task_pool_free(), ZstdWriteWrap::close(), do_multires_bake(), DRW_shader_exit(), sb_cf_threads_run(), sb_sfesf_threads_run(), seq_prefetch_free(), blender::compositor::threading_model_queue_stop(), wm_jobs_kill_job(), and wm_jobs_timer().
| tot | When 0 only initializes malloc mutex in a safe way (see sequence.c) problem otherwise: scene render will kill of the mutex! |
Definition at line 121 of file threads.cc.
References atomic_fetch_and_add_u(), ThreadSlot::avail, BLI_addtail(), BLI_listbase_clear(), ThreadSlot::do_thread, MEM_callocN, RE_MAX_THREAD, and thread_levels.
Referenced by background_task_pool_create(), do_multires_bake(), DRW_shader_init(), ZstdWriteWrap::open(), sb_cf_threads_run(), sb_sfesf_threads_run(), seq_prefetch_start_ex(), blender::compositor::threading_model_queue_start(), and WM_jobs_start().
| void BLI_threadpool_insert | ( | ListBase * | threadbase, |
| void * | callerdata ) |
Definition at line 184 of file threads.cc.
References LISTBASE_FOREACH, printf, and tslot_thread_start().
Referenced by background_task_pool_run(), do_multires_bake(), DRW_shader_init(), sb_cf_threads_run(), sb_sfesf_threads_run(), seq_prefetch_start_ex(), blender::compositor::threading_model_queue_start(), WM_jobs_start(), and ZstdWriteWrap::write().
| void BLI_threadpool_remove | ( | ListBase * | threadbase, |
| void * | callerdata ) |
Definition at line 197 of file threads.cc.
References LISTBASE_FOREACH.
Referenced by background_task_pool_cancel(), seq_prefetch_free(), seq_prefetch_start_ex(), and ZstdWriteWrap::write().
Definition at line 208 of file threads.cc.
References LISTBASE_FOREACH.
| TicketMutex * BLI_ticket_mutex_alloc | ( | void | ) |
Definition at line 511 of file threads.cc.
References TicketMutex::cond, MEM_callocN, and TicketMutex::mutex.
Referenced by DRW_gpu_context_create(), and WM_jobs_get().
| void BLI_ticket_mutex_free | ( | TicketMutex * | ticket | ) |
Definition at line 522 of file threads.cc.
References TicketMutex::cond, MEM_freeN(), and TicketMutex::mutex.
Referenced by DRW_gpu_context_destroy(), and wm_job_free().
| void BLI_ticket_mutex_lock | ( | TicketMutex * | ticket | ) |
Definition at line 554 of file threads.cc.
References ticket_mutex_lock().
Referenced by DRW_gpu_context_enable_ex(), DRW_system_gpu_render_context_enable(), WM_job_main_thread_lock_acquire(), and wm_job_main_thread_yield().
| bool BLI_ticket_mutex_lock_check_recursive | ( | TicketMutex * | ticket | ) |
Definition at line 559 of file threads.cc.
References ticket_mutex_lock().
Referenced by DRW_notify_view_update().
| void BLI_ticket_mutex_unlock | ( | TicketMutex * | ticket | ) |
Definition at line 564 of file threads.cc.
References TicketMutex::cond, TicketMutex::has_owner, TicketMutex::mutex, and TicketMutex::queue_head.
Referenced by DRW_gpu_context_disable_ex(), DRW_notify_view_update(), DRW_system_gpu_render_context_disable(), WM_job_main_thread_lock_release(), and wm_job_main_thread_yield().
|
static |
Definition at line 301 of file threads.cc.
References _colormanage_lock, _custom1_lock, _fftw_lock, _image_draw_lock, _image_lock, _movieclip_lock, _nodes_lock, _view3d_lock, _viewer_lock, BLI_assert_unreachable, LOCK_COLORMANAGE, LOCK_CUSTOM1, LOCK_DRAW_IMAGE, LOCK_FFTW, LOCK_IMAGE, LOCK_MOVIECLIP, LOCK_NODES, LOCK_VIEW3D, and LOCK_VIEWER.
Referenced by BLI_condition_wait_global_mutex(), BLI_thread_lock(), and BLI_thread_unlock().
|
static |
Definition at line 529 of file threads.cc.
References TicketMutex::cond, TicketMutex::has_owner, TicketMutex::mutex, TicketMutex::owner, TicketMutex::queue_head, and TicketMutex::queue_tail.
Referenced by BLI_ticket_mutex_lock(), and BLI_ticket_mutex_lock_check_recursive().
|
static |
Definition at line 173 of file threads.cc.
References ThreadSlot::callerdata, and ThreadSlot::do_thread.
Referenced by BLI_threadpool_insert().
|
static |
Definition at line 679 of file threads.cc.
References x.
Referenced by BLI_thread_queue_pop_timeout().
|
static |
Definition at line 96 of file threads.cc.
Referenced by global_mutex_from_type().
|
static |
Definition at line 93 of file threads.cc.
Referenced by global_mutex_from_type().
|
static |
Definition at line 97 of file threads.cc.
Referenced by global_mutex_from_type().
|
static |
Definition at line 91 of file threads.cc.
Referenced by global_mutex_from_type().
|
static |
Many thread cases have an X amount of jobs, and only an Y amount of threads are useful (typically amount of CPU's)
This code can be used to start a maximum amount of 'thread slots', which then can be filled in a loop with an idle timer.
A sample loop can look like this (pseudo c);
Definition at line 90 of file threads.cc.
Referenced by global_mutex_from_type().
|
static |
Definition at line 95 of file threads.cc.
Referenced by global_mutex_from_type().
|
static |
Definition at line 94 of file threads.cc.
Referenced by global_mutex_from_type().
|
static |
Definition at line 98 of file threads.cc.
Referenced by global_mutex_from_type().
|
static |
Definition at line 92 of file threads.cc.
Referenced by global_mutex_from_type().
|
static |
Definition at line 99 of file threads.cc.
Referenced by BLI_thread_is_main(), and BLI_threadapi_init().
|
static |
Definition at line 100 of file threads.cc.
Referenced by BLI_threadpool_init().
|
static |
Definition at line 101 of file threads.cc.
Referenced by BLI_system_num_threads_override_get(), BLI_system_num_threads_override_set(), BLI_system_thread_count(), and BLI_task_scheduler_init().