mirror of
https://github.com/isc-projects/bind9.git
synced 2026-06-11 03:19:59 -04:00
update
This commit is contained in:
parent
e7b7e6e746
commit
d6da3b9e10
5 changed files with 48 additions and 19 deletions
|
|
@ -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");
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
|
|
|
|||
Loading…
Reference in a new issue