MCPcopy Create free account
hub / github.com/Tracktion/choc / demonstrateTaskThread

Function demonstrateTaskThread

examples/threading_patterns.cpp:27–60  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

25};
26
27void demonstrateTaskThread()
28{
29 std::cout << "\n=== TaskThread Demo ===\n";
30
31 choc::threading::TaskThread taskThread;
32 std::atomic<int> counter{0};
33
34 // Start a task that runs every 500ms
35 taskThread.start (std::chrono::milliseconds (500), [&counter]()
36 {
37 int current = counter.fetch_add (1);
38 std::cout << "Periodic task executed #" << current + 1
39 << " at " << std::chrono::duration_cast<std::chrono::milliseconds>(
40 std::chrono::steady_clock::now().time_since_epoch()).count() << "ms\n";
41 });
42
43 // Let it run for a bit
44 std::this_thread::sleep_for (std::chrono::milliseconds (1200));
45
46 // Trigger it manually a few times
47 std::cout << "Triggering task manually...\n";
48 taskThread.trigger();
49 std::this_thread::sleep_for (std::chrono::milliseconds (100));
50 taskThread.trigger();
51 std::this_thread::sleep_for (std::chrono::milliseconds (100));
52
53 // Let it run a bit more
54 std::this_thread::sleep_for (std::chrono::milliseconds (800));
55
56 std::cout << "Stopping task thread...\n";
57 taskThread.stop();
58
59 std::cout << "Task executed " << counter.load() << " times total\n";
60}
61
62void demonstrateSpinLock()
63{

Callers 1

mainFunction · 0.85

Calls 4

triggerMethod · 0.80
loadMethod · 0.80
startMethod · 0.45
stopMethod · 0.45

Tested by

no test coverage detected