You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
3.0 KiB
44 lines
3.0 KiB
<?xml version="1.0" encoding="UTF-8"?>
|
|
<root xmlns:nsd="https://structorizer.fisch.lu" version="3.32-15" preRepeat="until " postFor="to" preReturn="return" postForIn="in" preWhile="while " output="OUTPUT" input="INPUT" preFor="for" preExit="exit" preLeave="leave" ignoreCase="true" preThrow="throw" preForIn="foreach" stepFor="by" namespace="" author="user" created="2024-01-18" changedby="user" changed="2024-01-18" origin="Structorizer 3.32-15" text=""void CacheData::WaitOnCompletion()"" comment="""" color="ffffff" type="program" style="nice">
|
|
<children>
|
|
<alternative text=""is cache valid (not nullptr)"" comment="""" color="ffffff" disabled="0">
|
|
<qTrue>
|
|
<instruction text=""return immediately"" comment="""" color="ffffff" rotated="0" disabled="0"></instruction>
|
|
</qTrue>
|
|
<qFalse>
|
|
<while text=""while handlers is not valid (equals nullptr)"" comment="""" color="ffffff" disabled="0">
|
|
<qWhile>
|
|
<instruction text=""handlers.wait()"" comment="""" color="ffffff" rotated="0" disabled="0"></instruction>
|
|
</qWhile>
|
|
</while>
|
|
<instruction text=""local_handlers <- handlers.exchange(uint64::max)","handlers <- uint64::max"" comment="""" color="ffffff" rotated="0" disabled="0"></instruction>
|
|
<alternative text=""is local_handlers valid (not nullptr and not uint64::max)"" comment="""" color="ffffff" disabled="0">
|
|
<qTrue>
|
|
<for text=""foreach handler in local_handlers"" comment="""" counterVar="handler" startValue="" stepConst="" style="TRAVERSAL" insep="in" color="ffffff" disabled="0">
|
|
<qFor>
|
|
<instruction text=""status <- handler.wait()"" comment="""" color="ffffff" rotated="0" disabled="0"></instruction>
|
|
</qFor>
|
|
</for>
|
|
<alternative text=""status contains error"" comment="""" color="ffffff" disabled="0">
|
|
<qTrue>
|
|
<instruction text=""cache <- source pointer"" comment="""" color="ffffff" rotated="0" disabled="0"></instruction>
|
|
<instruction text=""free(destination pointer)"" comment="""" color="ffffff" rotated="0" disabled="0"></instruction>
|
|
</qTrue>
|
|
<qFalse>
|
|
<instruction text=""cache <- destination pointer"" comment="""" color="ffffff" rotated="0" disabled="0"></instruction>
|
|
</qFalse>
|
|
</alternative>
|
|
<instruction text=""signal threads waiting on cache or handlers"" comment="""" color="ffffff" rotated="0" disabled="0"></instruction>
|
|
</qTrue>
|
|
<qFalse>
|
|
<while text=""while cache is not valid (equals nullptr)"" comment="""" color="ffffff" disabled="0">
|
|
<qWhile>
|
|
<instruction text=""cache.wait()"" comment="""" color="ffffff" rotated="0" disabled="0"></instruction>
|
|
</qWhile>
|
|
</while>
|
|
</qFalse>
|
|
</alternative>
|
|
</qFalse>
|
|
</alternative>
|
|
</children>
|
|
</root>
|