Skip to content

Commit 42eac24

Browse files
committed
[sched] finished Single Thread consistency job execution
1 parent ab9dd68 commit 42eac24

21 files changed

+285
-119
lines changed

LICENSE

100644100755
File mode changed.

README.md

100644100755
File mode changed.

examples/Makefile

100644100755
+13-1
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,15 @@ ifeq ($(UNAME_S),Linux)
3333
endif
3434
endif
3535

36-
px_sched_examples = px_sched_example1 px_sched_example2 px_sched_example3 px_sched_example4 px_sched_example5 px_sched_example6 px_sched_example7
36+
px_sched_examples = px_sched_example1 px_sched_example2 px_sched_example3 px_sched_example4 px_sched_example5 px_sched_example6 px_sched_example7 px_sched_example8
3737
px_render_examples = px_render_example_imgui #WIP: px_render_example_rtt px_render_example_triangle
3838

3939
all: $(px_sched_examples) $(px_render_examples)
4040

4141
$(px_sched_examples): %: %.cpp
4242
$(CXX) $(CXXFLAGS) -o $@ $< $(LDFLAGS)
43+
$(CXX) -DPX_SCHED_CONFIG_SINGLE_THREAD $(CXXFLAGS) -o $@_noMT $< $(LDFLAGS)
44+
4345

4446
$(px_render_examples): %: %.cpp
4547
$(CXX) -std=c++14 -fpermissive -D linux -g -O2 -I . -o $@ $< $(LDFLAGS) -ldl -lX11
@@ -56,4 +58,14 @@ tests: $(px_sched_examples)
5658
./px_sched_example5
5759
./px_sched_example6
5860
./px_sched_example7
61+
./px_sched_example8
5962
@echo "ALL px_sched_examples executed"
63+
./px_sched_example1_noMT
64+
./px_sched_example2_noMT
65+
./px_sched_example3_noMT
66+
./px_sched_example4_noMT
67+
./px_sched_example5_noMT
68+
./px_sched_example6_noMT
69+
./px_sched_example7_noMT
70+
./px_sched_example8_noMT
71+
@echo "ALL px_sched_examples executed (no MT)"

examples/common/mem_check.h

100644100755
File mode changed.

examples/deps/imconfig.h

100644100755
File mode changed.

examples/deps/imgui.cpp

100644100755
File mode changed.

examples/deps/imgui.h

100644100755
File mode changed.

examples/deps/imgui_demo.cpp

100644100755
File mode changed.

examples/deps/imgui_draw.cpp

100644100755
File mode changed.

examples/deps/imgui_internal.h

100644100755
File mode changed.

examples/deps/json.hpp

100644100755
File mode changed.

examples/deps/sokol_app.h

100644100755
File mode changed.

examples/deps/sokol_time.h

100644100755
File mode changed.

examples/deps/stb_image.h

100644100755
File mode changed.

examples/deps/stb_rect_pack.h

100644100755
File mode changed.

examples/deps/stb_textedit.h

100644100755
File mode changed.

examples/deps/stb_truetype.h

100644100755
File mode changed.

examples/deps/tiny_gltf.h

100644100755
File mode changed.

examples/px_sched_example7.cpp

100644100755
File mode changed.

examples/px_sched_example8.cpp

+42
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
// Example-8:
2+
// Job order (mainly to check Single Threaded implementation)
3+
4+
#define PX_SCHED_IMPLEMENTATION 1
5+
#include "../px_sched.h"
6+
#include <cassert>
7+
8+
int main(int, char **) {
9+
px_sched::Scheduler schd;
10+
schd.init();
11+
12+
// (a) Sync objects can be used later to wait for them
13+
px_sched::Sync start;
14+
px_sched::Sync middle;
15+
px_sched::Sync end;
16+
schd.incrementSync(&start);
17+
18+
schd.incrementSync(&middle);
19+
size_t data[128] = {};
20+
schd.runAfter(middle, [&data]{
21+
printf("Checking...\n");
22+
for(size_t i = 0; i < 128; ++i) {
23+
assert(data[i] == i*2);
24+
}
25+
}, &end);
26+
for(size_t i = 0; i < 128; ++i) {
27+
schd.runAfter(start,[i, &data] () mutable {
28+
printf("Running %lu\n",i);
29+
data[i] = i*2;
30+
}, &middle);
31+
}
32+
schd.decrementSync(&middle);
33+
assert(data[127] == 0);
34+
// start now
35+
schd.decrementSync(&start);
36+
printf("Waiting for tasks to finish...\n");
37+
schd.waitFor(end); // wait for all tasks to finish
38+
assert(data[127] == 254);
39+
printf("Waiting for tasks to finish...DONE \n");
40+
41+
return 0;
42+
}

0 commit comments

Comments
 (0)