void terminate(int signum)
{
printf("---------------- TERMINATE T%d (%d)\n", (int)syscall(SYS_gettid), signum);
-#if 0
+#if 1
jobs_terminate();
#else
jobs_invoke0(0, jobs_terminate);
exit(0);
}
-int main()
+void start()
{
int i;
struct foo *foo;
struct timespec ts;
req.itf = &itf;
- jobs_init(4, 0, 20000);
for (i = 0 ; i < 10000 ; i++) {
req.closure = foo = malloc(sizeof *foo);
foo->value = i;
afb_thread_req_call(req, process, 5, (&ts) + (i % 7));
unref(foo);
if (i == 5000)
-#if 1
- jobs_invoke0(0, terminate);
-#else
jobs_queue0(NULL, 0, terminate);
-#endif
ts.tv_sec = 0;
ts.tv_nsec = 1000000;
// nanosleep(&ts, NULL);
}
- ts.tv_sec = 1;
- ts.tv_nsec = 0;
- nanosleep(&ts, NULL);
- jobs_terminate();
- return 0;
}
+int main()
+{
+ int i;
+ struct foo *foo;
+ struct afb_req req;
+ struct timespec ts;
+
+ req.itf = &itf;
+ jobs_start(4, 0, 20000, start);
+ return 1;
+}
+
+