Add TaskRunner to manage the thread for Bs*.

Bug: 31819198 (partly fixes it)

Test: libhidl-test (repeated 1000 times)
Test: hidl_test

Change-Id: Ia68adbab9dd40c09dfd2861ae03f65028d4694c7
diff --git a/test/main.cpp b/test/main.cpp
index 648f0c7..fff69b0 100644
--- a/test/main.cpp
+++ b/test/main.cpp
@@ -19,6 +19,7 @@
 #include <android-base/logging.h>
 #include <gtest/gtest.h>
 #include <hidl/HidlSupport.h>
+#include <hidl/TaskRunner.h>
 #include <vector>
 
 #define EXPECT_ARRAYEQ(__a1__, __a2__, __size__) EXPECT_TRUE(isArrayEqual(__a1__, __a2__, __size__))
@@ -90,6 +91,20 @@
     EXPECT_ARRAYEQ(v2, v, 3);
 }
 
+TEST_F(LibHidlTest, TaskRunnerTest) {
+    using android::hardware::TaskRunner;
+    TaskRunner tr;
+    bool flag = false;
+    tr.push([&] {
+        usleep(1000);
+        flag = true;
+    });
+    usleep(500);
+    EXPECT_FALSE(flag);
+    usleep(1000);
+    EXPECT_TRUE(flag);
+}
+
 template <typename T>
 void great(android::hardware::hidl_vec<T>) {}