Commit d6da3b9e authored by Bob Halley's avatar Bob Halley
Browse files

update

parent e7b7e6e7
......@@ -42,6 +42,7 @@ main(int argc, char *argv[]) {
mem_context_t mctx = NULL;
task_manager_t manager = NULL;
task_t t1 = NULL, t2 = NULL;
task_t t3 = NULL, t4 = NULL;
generic_event_t event;
unsigned int workers;
......@@ -57,27 +58,45 @@ main(int argc, char *argv[]) {
INSIST(task_create(manager, "1", my_shutdown, 0, &t1));
INSIST(task_create(manager, "2", my_shutdown, 0, &t2));
INSIST(task_create(manager, "3", my_shutdown, 0, &t3));
INSIST(task_create(manager, "4", my_shutdown, 0, &t4));
event = event_get(mctx, 1, my_callback, sizeof *event);
task_send_event(t1, event);
event = event_get(mctx, 1, my_callback, sizeof *event);
task_send_event(t2, event);
task_send_event(t1, event);
event = event_get(mctx, 1, my_callback, sizeof *event);
task_send_event(t1, event);
event = event_get(mctx, 1, my_callback, sizeof *event);
task_send_event(t2, event);
task_send_event(t1, event);
event = event_get(mctx, 1, my_callback, sizeof *event);
task_send_event(t1, event);
event = event_get(mctx, 1, my_callback, sizeof *event);
task_send_event(t2, event);
task_send_event(t1, event);
event = event_get(mctx, 1, my_callback, sizeof *event);
task_send_event(t1, event);
event = event_get(mctx, 1, my_callback, sizeof *event);
task_send_event(t1, event);
event = event_get(mctx, 1, my_callback, sizeof *event);
task_send_event(t1, event);
event = event_get(mctx, 1, my_callback, sizeof *event);
task_send_event(t2, event);
event = event_get(mctx, 1, my_callback, sizeof *event);
task_send_event(t3, event);
event = event_get(mctx, 1, my_callback, sizeof *event);
task_send_event(t4, event);
event = event_get(mctx, 1, my_callback, sizeof *event);
task_send_event(t2, event);
event = event_get(mctx, 1, my_callback, sizeof *event);
task_send_event(t3, event);
event = event_get(mctx, 1, my_callback, sizeof *event);
task_send_event(t4, event);
task_shutdown(t1);
task_shutdown(t2);
task_detach(&t1);
task_detach(&t2);
task_detach(&t3);
task_detach(&t4);
printf("destroy\n");
task_manager_destroy(&manager);
printf("destroyed\n");
......
......@@ -57,6 +57,7 @@ void * event_get(mem_context_t,
size_t);
void event_put(void *);
/***
*** Tasks.
***/
......
......@@ -22,7 +22,7 @@ typedef pthread_cond_t os_condition_t;
#else
Error! Condition variables are not meaningful for a non-threaded program.
#error Condition variables are not meaningful for a non-threaded program.
#endif
......
......@@ -14,6 +14,10 @@ typedef pthread_t os_thread_t;
== 0)
#define os_thread_detach(t) INSIST(pthread_detach((t)) == 0)
#else
#error Threads are not meaningful for a non-threaded program.
#endif
#endif /* THREAD_H */
......@@ -11,6 +11,11 @@
#define VALID_TASK(t) ((t) != NULL && \
(t)->magic == TASK_MAGIC)
/*
* We use macros instead of calling the os_ routines
* directly because the capital letters make the
* locking stand out.
*/
#define LOCK(lp) os_mutex_lock((lp))
#define UNLOCK(lp) os_mutex_unlock((lp))
#define WAIT(cvp, lp) os_condition_wait((cvp), (lp))
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment