<p></p>
<p><b>@fjmolinas</b> commented on this pull request.</p>

<p>Some more comments...</p><hr>

<p>In <a href="https://github.com/RIOT-OS/RIOT/pull/16126#discussion_r717348946">examples/thread_duel/main.c</a>:</p>
<pre style='color:#555'>> +    while ((xtimer_now_usec() - start) < us){
+        /*do nothing*/
+    }
</pre>
<p>Isn't this the same as <code>xtimer_spin</code>?</p>

<hr>

<p>In <a href="https://github.com/RIOT-OS/RIOT/pull/16126#discussion_r717349304">examples/thread_duel/main.c</a>:</p>
<pre style='color:#555'>> +    /*be nice give the CPU some time to do other things or rest*/
+    xtimer_usleep(us);
+}
+
+/*
+ * the following are threads that count and wait with different strategies and
+ * print their current count in steps.
+ * the ration of active (doing hard work like checking the timer)
+ * to passive (wait to be informed when a certain time is there) waiting
+ * is determined by there value given to the thread.
+ * the restless threads do never pause.
+ */
+
+void * thread_nicebreaks(void * d)
+{
+    xtimer_usleep(200 * 1000);  /*always be nice at start*/
</pre>

⬇️ Suggested change
<pre style="color: #555">-    xtimer_usleep(200 * 1000);  /*always be nice at start*/
+    xtimer_usleep(200 * US_PER_MS);  /*always be nice at start*/
</pre>


<hr>

<p>In <a href="https://github.com/RIOT-OS/RIOT/pull/16126#discussion_r717350160">examples/thread_duel/main.c</a>:</p>
<pre style='color:#555'>> +            printf("%s: %" PRIu32 ", %" PRIu32 "\n", name, w, work);
+#else
+            printf("T-Pid %i:%" PRIu32 ", %" PRIu32 "\n", pid, w, work);
+#endif
+            step = w;
+        }
+        bad_wait(work * WORK_SCALE);
+        w += work;
+    }
+}
+
+int main(void)
+{
+    {
+        static char stack[THREAD_STACKSIZE_DEFAULT];
+        static uint32_t workness = 3;   /* 0-10 workness*/
</pre>
<p>Is this a word?</p>

<hr>

<p>In <a href="https://github.com/RIOT-OS/RIOT/pull/16126#discussion_r717350876">examples/thread_duel/main.c</a>:</p>
<pre style='color:#555'>> +        if (w - step >= PRINT_STEPS) {
+#ifdef DEVELHELP
+            printf("%s: %" PRIu32 ", %" PRIu32 "\n", name, w, work);
+#else
+            printf("T-Pid %i:%" PRIu32 ", %" PRIu32 "\n", pid, w, work);
+#endif
+            step = w;
+        }
+        bad_wait(work * WORK_SCALE);
+        w += work;
+    }
+}
+
+int main(void)
+{
+    {
</pre>
<p>why these brackets?</p>

<hr>

<p>In <a href="https://github.com/RIOT-OS/RIOT/pull/16126#discussion_r717352673">examples/thread_duel/main.c</a>:</p>
<pre style='color:#555'>> +    for (;;) {
+        if (w - step >= PRINT_STEPS) {
+#ifdef DEVELHELP
+            printf("%s: %" PRIu32 ", %" PRIu32 "\n", name, w, work);
+#else
+            printf("T-Pid %i:%" PRIu32 ", %" PRIu32 "\n", pid, w, work);
+#endif
+            step = w;
+        }
+        bad_wait(work * WORK_SCALE);
+        w += work;
+        bad_wait(rest * WORK_SCALE);
+    }
+}
+
+void * thread_restless_yielding(void * d)
</pre>
<p>This does not seem to be used...</p>

<hr>

<p>In <a href="https://github.com/RIOT-OS/RIOT/pull/16126#discussion_r717356368">examples/thread_duel/Makefile</a>:</p>
<pre style='color:#555'>> @@ -0,0 +1,34 @@
+# name of your application
+APPLICATION = thread_duel
+
+# If no BOARD is found in the environment, use this default:
+BOARD ?= native
+
+# This has to be the absolute path to the RIOT base directory:
+RIOTBASE ?= $(CURDIR)/../..
+
+#this defaults to build with round_robin using ztimer
</pre>

⬇️ Suggested change
<pre style="color: #555">-#this defaults to build with round_robin using ztimer
+# This defaults to build with round_robin using ztimer
</pre>


<hr>

<p>In <a href="https://github.com/RIOT-OS/RIOT/pull/16126#discussion_r717356984">examples/thread_duel/README.md</a>:</p>
<pre style='color:#555'>> +this is a thread duel application
+    to show or not to show
+RIOTS multi-threading abilities
</pre>
<p>Can you explain more here? Right now when looking at the test and example I'm not sure what to expect...</p>

<hr>

<p>In <a href="https://github.com/RIOT-OS/RIOT/pull/16126#discussion_r717357576">sys/sched_round_robin/Kconfig</a>:</p>
<pre style='color:#555'>> @@ -0,0 +1,12 @@
+# Copyright (c) 2021 TUBA Freiberg
+#
+# This file is subject to the terms and conditions of the GNU Lesser
+# General Public License v2.1. See the file LICENSE in the top level
+# directory for more details.
+#
+
+config MODULE_SCHED_ROUND_ROBIN
+    bool "round robin scheduling support"
+    depends on MODULE_XTIMER
</pre>
<p>Currently, we are going with <code>ztimer</code> as the default backend for new modules.</p>

<hr>

<p>In <a href="https://github.com/RIOT-OS/RIOT/pull/16126#discussion_r717358029">examples/thread_duel/main.c</a>:</p>
<pre style='color:#555'>> +    uint32_t w = 0;
+    uint32_t work = *((uint32_t *) d);
+    if (work > 10) {
+        work = 5;
+    }
+    uint32_t rest = (10 - work);
+    uint32_t step = 0;
</pre>
<p>This logic is not evident for me just from looking at it, can you give more details (comments)?</p>

<hr>

<p>In <a href="https://github.com/RIOT-OS/RIOT/pull/16126#discussion_r717358334">examples/thread_duel/main.c</a>:</p>
<pre style='color:#555'>> +    uint32_t w = 0;
+    uint32_t work = *((uint32_t *) d);
+    if (work > 10) {
+        work = 5;
+    }
+    /*uint32_t rest = (10 - work);*/
+    uint32_t step = 0;
</pre>
<p>Same as above.</p>

<hr>

<p>In <a href="https://github.com/RIOT-OS/RIOT/pull/16126#discussion_r717358659">examples/thread_duel/main.c</a>:</p>
<pre style='color:#555'>> +#ifdef DEVELHELP
+            printf("%s: %" PRIu32 ", %" PRIu32 "\n", name, w, work);
+#else
+            printf("T-Pid %i:%" PRIu32 ", %" PRIu32 "\n", pid, w, work);
+#endif
+            step = w;
+        }
+        bad_wait(work * WORK_SCALE);
+        w += work;
+        thread_yield();
+    }
+}
+
+void * thread_restless(void * d)
+{
+    xtimer_usleep(200 * 1000);  /*always be nice at start*/
</pre>

⬇️ Suggested change
<pre style="color: #555">-    xtimer_usleep(200 * 1000);  /*always be nice at start*/
+    xtimer_usleep(200 * 1US_PER_MS);  /*always be nice at start*/
</pre>


<hr>

<p>In <a href="https://github.com/RIOT-OS/RIOT/pull/16126#discussion_r717360153">sys/sched_round_robin/sched_round_robin.c</a>:</p>
<pre style='color:#555'>> +            else {
+                return;
+            }
</pre>
<p>?</p>

<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">—<br />You are receiving this because you are subscribed to this thread.<br />Reply to this email directly, <a href="https://github.com/RIOT-OS/RIOT/pull/16126#pullrequestreview-765133776">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe-auth/ABE7WYGOW5MUR74PW64W4MDUEF6HLANCNFSM4YPIJIDA">unsubscribe</a>.<br />Triage notifications on the go with GitHub Mobile for <a href="https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675">iOS</a> or <a href="https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub">Android</a>.
<img src="https://github.com/notifications/beacon/ABE7WYG6ZKD3NZ4MVMCAUHTUEF6HLA5CNFSM4YPIJIDKYY3PNVWWK3TUL52HS4DFWFIHK3DMKJSXC5LFON2FEZLWNFSXPKTDN5WW2ZLOORPWSZGOFWNQHUA.gif" height="1" width="1" alt="" /></p>
<script type="application/ld+json">[
{
"@context": "http://schema.org",
"@type": "EmailMessage",
"potentialAction": {
"@type": "ViewAction",
"target": "https://github.com/RIOT-OS/RIOT/pull/16126#pullrequestreview-765133776",
"url": "https://github.com/RIOT-OS/RIOT/pull/16126#pullrequestreview-765133776",
"name": "View Pull Request"
},
"description": "View this Pull Request on GitHub",
"publisher": {
"@type": "Organization",
"name": "GitHub",
"url": "https://github.com"
}
}
]</script>