コード例 #1
0
ファイル: Microtask.cpp プロジェクト: junmin-zhu/blink
void Microtask::performCheckpoint()
{
    V8PerIsolateData* isolateData = V8PerIsolateData::current();
    ASSERT(isolateData);
    if (isolateData->recursionLevel() || isolateData->performingMicrotaskCheckpoint())
        return;
    isolateData->setPerformingMicrotaskCheckpoint(true);

    while (!microtaskQueue().isEmpty()) {
        Vector<MicrotaskCallback> microtasks;
        microtasks.swap(microtaskQueue());
        for (size_t i = 0; i < microtasks.size(); ++i) {
            microtasks[i]();
        }
    }

    isolateData->setPerformingMicrotaskCheckpoint(false);
}
コード例 #2
0
ファイル: Microtask.cpp プロジェクト: Jamesducque/mojo
void Microtask::performCheckpoint()
{
    MicrotaskQueue& queue = microtaskQueue();
    while(!queue.isEmpty()) {
        TRACE_EVENT0("sky", "Microtask::performCheckpoint");

        MicrotaskQueue local;
        swap(queue, local);
        for (const auto& task : local)
            task->run();
    }
}
コード例 #3
0
ファイル: Microtask.cpp プロジェクト: junmin-zhu/blink
void Microtask::enqueueMicrotask(MicrotaskCallback callback)
{
    microtaskQueue().append(callback);
}
コード例 #4
0
ファイル: Microtask.cpp プロジェクト: Jamesducque/mojo
void Microtask::enqueueMicrotask(PassOwnPtr<WebThread::Task> callback)
{
    microtaskQueue().append(callback);
}