Files
test2/source/blender/compositor/intern/COM_WorkScheduler.h
Jacques Lucke 64a9260921 Core: remove WITH_CXX_GUARDEDALLOC option
This implements the proposal from #124512. For that it contains the following
changes:
* Remove the global override of `new`/`delete` when `WITH_CXX_GUARDEDALLOC` was
  enabled.
* Always use `MEM_CXX_CLASS_ALLOC_FUNCS` where it is currently used. This used
  to be guarded by `WITH_CXX_GUARDEDALLOC` in some but not all cases. This means
  that a few classes which didn't use our guarded allocator by default before,
  are now using it.

Pull Request: https://projects.blender.org/blender/blender/pulls/130181
2024-11-13 13:39:49 +01:00

67 lines
1.6 KiB
C++

/* SPDX-FileCopyrightText: 2011 Blender Authors
*
* SPDX-License-Identifier: GPL-2.0-or-later */
#pragma once
#include "MEM_guardedalloc.h"
namespace blender::compositor {
struct WorkPackage;
/** \brief the workscheduler
* \ingroup execution
*/
struct WorkScheduler {
/**
* \brief schedule a chunk of a group to be calculated.
* An execution group schedules a chunk in the WorkScheduler
*/
static void schedule(WorkPackage *package);
/**
* \brief initialize the WorkScheduler
*
* during initialization the mutexes are initialized.
* there are two mutexes (for every device type one)
* After mutex initialization the system is queried in order to count the number of CPUDevices
* to be created. For every hardware thread a CPUDevice is created.
*/
static void initialize(int num_cpu_threads);
/**
* \brief deinitialize the WorkScheduler
* free all allocated resources
*/
static void deinitialize();
/**
* \brief Start the execution
* this methods will start the WorkScheduler. Inside this method all threads are initialized.
* for every device a thread is created.
* \see initialize Initialization and query of the number of devices
*/
static void start();
/**
* \brief stop the execution
* All created thread by the start method are destroyed.
* \see start
*/
static void stop();
/**
* \brief wait for all work to be completed.
*/
static void finish();
static int get_num_cpu_threads();
static int current_thread_id();
MEM_CXX_CLASS_ALLOC_FUNCS("COM:WorkScheduler")
};
} // namespace blender::compositor