- Timestamp:
- Nov 1, 2013 7:11:48 AM (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
pjproject/branches/projects/pjsua2/pjsip/src/pjsua-lib/pjsua_core.c
r4555 r4639 687 687 } 688 688 689 PJ_DEF(pj_status_t) pjsua_register_worker_thread(const char *name) 690 { 691 pj_thread_desc desc; 692 pj_thread_t *thread; 693 pj_status_t status; 694 695 if (pjsua_var.thread_quit_flag) 696 return PJ_EGONE; 697 698 status = pj_thread_register(NULL, desc, &thread); 699 if (status != PJ_SUCCESS) 700 return status; 701 702 if (name) 703 PJ_LOG(4,(THIS_FILE, "Worker thread %s started", name)); 704 705 worker_thread(NULL); 706 707 if (name) 708 PJ_LOG(4,(THIS_FILE, "Worker thread %s stopped", name)); 709 710 return PJ_SUCCESS; 711 } 712 713 PJ_DEF(void) pjsua_stop_worker_threads(void) 714 { 715 unsigned i; 716 717 pjsua_var.thread_quit_flag = 1; 718 719 /* Wait worker threads to quit: */ 720 for (i=0; i<(int)pjsua_var.ua_cfg.thread_cnt; ++i) { 721 if (pjsua_var.thread[i]) { 722 pj_status_t status; 723 status = pj_thread_join(pjsua_var.thread[i]); 724 if (status != PJ_SUCCESS) { 725 PJ_PERROR(4,(THIS_FILE, status, "Error joining worker thread")); 726 pj_thread_sleep(1000); 727 } 728 pj_thread_destroy(pjsua_var.thread[i]); 729 pjsua_var.thread[i] = NULL; 730 } 731 } 732 } 689 733 690 734 /* Init random seed */ … … 1466 1510 1467 1511 /* Signal threads to quit: */ 1468 pjsua_var.thread_quit_flag = 1; 1469 1470 /* Wait worker threads to quit: */ 1471 for (i=0; i<(int)pjsua_var.ua_cfg.thread_cnt; ++i) { 1472 if (pjsua_var.thread[i]) { 1473 pj_status_t status; 1474 status = pj_thread_join(pjsua_var.thread[i]); 1475 if (status != PJ_SUCCESS) { 1476 PJ_PERROR(4,(THIS_FILE, status, "Error joining worker thread")); 1477 pj_thread_sleep(1000); 1478 } 1479 pj_thread_destroy(pjsua_var.thread[i]); 1480 pjsua_var.thread[i] = NULL; 1481 } 1482 } 1512 pjsua_stop_worker_threads(); 1483 1513 1484 1514 if (pjsua_var.endpt) {
Note: See TracChangeset
for help on using the changeset viewer.