02_unit_testing: Create thread for unit test server

http://pwrev.dev/253913 updates Pigweed's unit testing RPC server to
require a dedicated thread on which to run tests. This defines that
thread and provides it to the server.

Bug: 408449338
Change-Id: Iedecc4f638386ac32f685c69a441f0fb28abc91c
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/examples/+/280655
Reviewed-by: Armando Montanez <amontanez@google.com>
Presubmit-Verified: CQ Bot Account <pigweed-scoped@luci-project-accounts.iam.gserviceaccount.com>
Pigweed-Auto-Submit: Alexei Frolov <frolv@google.com>
Lint: Lint 🤖 <android-build-ayeaye@system.gserviceaccount.com>
Commit-Queue: Auto-Submit <auto-submit@pigweed-service-accounts.iam.gserviceaccount.com>
diff --git a/examples/02_unit_testing/BUILD.bazel b/examples/02_unit_testing/BUILD.bazel
index 0483a25..0c5fa02 100644
--- a/examples/02_unit_testing/BUILD.bazel
+++ b/examples/02_unit_testing/BUILD.bazel
@@ -50,6 +50,7 @@
         "@pigweed//pw_chrono:system_timer",
         "@pigweed//pw_log",
         "@pigweed//pw_system",
+        "@pigweed//pw_thread:thread",
         "@pigweed//pw_unit_test:rpc_service",
     ],
 )
diff --git a/examples/02_unit_testing/BUILD.gn b/examples/02_unit_testing/BUILD.gn
index 5e6e65d..7c5d80e 100644
--- a/examples/02_unit_testing/BUILD.gn
+++ b/examples/02_unit_testing/BUILD.gn
@@ -33,6 +33,7 @@
     ":bitops_test.lib",
     "$dir_pw_system:pw_system",
     "$dir_pw_system:rpc_server",
+    "$dir_pw_thread:thread",
     "$dir_pw_unit_test:rpc_service",
   ]
 }
diff --git a/examples/02_unit_testing/main.cc b/examples/02_unit_testing/main.cc
index 988d0fd..b5ec3d1 100644
--- a/examples/02_unit_testing/main.cc
+++ b/examples/02_unit_testing/main.cc
@@ -14,14 +14,30 @@
 #define PW_LOG_MODULE_NAME "user_init"
 
 #include "pw_system/rpc_server.h"
+#include "pw_thread/thread.h"
 #include "pw_unit_test/unit_test_service.h"
 
+namespace {
+
+constexpr pw::ThreadAttrs kUnitTestThreadAttrs =
+    pw::ThreadAttrs()
+        .set_name("UnitTestThread")
+        .set_priority(pw::ThreadPriority::Medium())
+        .set_stack_size_bytes(8192);
+pw::ThreadContextFor<kUnitTestThreadAttrs> unit_test_thread_context;
+
+pw::unit_test::UnitTestThread unit_test_thread;
+
+}  // namespace
+
 namespace pw::system {
 
-pw::unit_test::UnitTestService unit_test_service;
-
 // This will run once after pw::system::Init() completes. This callback must
 // return or it will block the work queue.
-void UserAppInit() { GetRpcServer().RegisterService(unit_test_service); }
+void UserAppInit() {
+  pw::Thread(pw::GetThreadOptions(unit_test_thread_context), unit_test_thread)
+      .detach();
+  GetRpcServer().RegisterService(unit_test_thread.service());
+}
 
 }  // namespace pw::system
diff --git a/third_party/pigweed b/third_party/pigweed
index 74fc655..b6ba89f 160000
--- a/third_party/pigweed
+++ b/third_party/pigweed
@@ -1 +1 @@
-Subproject commit 74fc6559bf6c6e557c7b0c3fa0394cd7cff01acc
+Subproject commit b6ba89f7c4a12b7af74d5336883023f103375127