2
0
mirror of https://gitlab.isc.org/isc-projects/bind9 synced 2025-08-30 14:07:59 +00:00
This commit is contained in:
Bob Halley
1998-08-18 08:05:45 +00:00
parent e7b7e6e746
commit d6da3b9e10
5 changed files with 48 additions and 19 deletions

View File

@@ -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));
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(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(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(t1, event);
event = event_get(mctx, 1, my_callback, sizeof *event);
task_send_event(t2, event);
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(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(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");

View File

@@ -57,6 +57,7 @@ void * event_get(mem_context_t,
size_t);
void event_put(void *);
/***
*** Tasks.
***/

View File

@@ -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

View File

@@ -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 */

View File

@@ -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))