MCPcopy Create free account
hub / github.com/SakuraEngine/SakuraEngine / initialize

Method initialize

modules/core/core/src/async/job.cpp:234–274  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

232}
233
234JobResult JobQueue::initialize() SKR_NOEXCEPT
235{
236 JobResult ret;
237 const char8_t* n = desc.name;
238 for (uint32_t i = 0; i < desc.thread_count; ++i)
239 {
240 JobThreadFunction* jobfunc = SkrNew<JobThreadFunctionImpl>(itemList);
241 SKR_ASSERT(jobfunc != nullptr);
242 if (jobfunc == nullptr)
243 {
244 return ASYNC_RESULT_ERROR_OUT_OF_MEMORY;
245 }
246 skr::String tname = n ? n : u8"UnknownJobQueue";
247 auto taftfix = skr::format(u8"_{}"_cuqv, (int32_t)i);
248 tname.append(taftfix);
249 NamedThreadDesc tdesc = {};
250 tdesc.name = tname.u8_str();
251 tdesc.priority = desc.priority;
252 tdesc.stack_size = desc.stack_size;
253 auto t = SkrNew<JobQueueThread>();
254 t->initialize(tdesc);
255 SKR_ASSERT(t != nullptr);
256 if (t == nullptr)
257 {
258 SkrDelete(jobfunc);
259 return ASYNC_RESULT_ERROR_OUT_OF_MEMORY;
260 }
261
262 ret = t->start(jobfunc);
263 SKR_ASSERT(ret == ASYNC_RESULT_OK);
264 if (ret != ASYNC_RESULT_OK)
265 {
266 SkrDelete(jobfunc);
267 SkrDelete(t);
268 return ret;
269 }
270
271 thread_list.emplace_back(t);
272 }
273 return ASYNC_RESULT_OK;
274}
275
276int JobQueue::finalize() SKR_NOEXCEPT
277{

Callers 2

ServiceThreadMethod · 0.45
JobItemQueueMethod · 0.45

Calls 6

SkrDeleteFunction · 0.85
formatFunction · 0.50
appendMethod · 0.45
u8_strMethod · 0.45
startMethod · 0.45
emplace_backMethod · 0.45

Tested by

no test coverage detected