use package core.intrinsics.onyx { init }
#local runtime :: package runtime
-#if false {
- @Relocate
- divide_array :: (arr: [] $T, divisions: [] [] T) {
- if divisions.count == 0 do return;
-
- chunk_size := arr.count / divisions.count;
-
- i := 0;
- for ^ divisions {
- low := i*chunk_size;
- high := (i+1)*chunk_size;
- if i == divisions.count - 1 do high = divisions.count;
- *it = arr[low .. high];
- i += 1;
- }
- }
-}
-
Color :: enum {
White;
Red;
--- /dev/null
+#load "core/std"
+
+use package core
+
+main :: (args) => {
+ sum := 0;
+
+ thread_data: struct {
+ sum : ^i32;
+ mutex: sync.Mutex;
+ };
+ thread_data.sum = ^sum;
+ sync.mutex_init(^thread_data.mutex);
+
+ iter.parallel_for(0 .. 10000, 4, ^thread_data) {
+ sync.scoped_mutex(^thread_data.mutex);
+ *thread_data.sum += it;
+ }
+
+ println(sum);
+}
+