int main() { /*int i = 0; for( ; i < 5; ++i) { node_list1[i] = calloc(10000000,sizeof(list_node)); node_list2[i] = calloc(10000000,sizeof(list_node)); node_list3[i] = calloc(10000000,sizeof(list_node)); }*/ mq1 = new_msgque(1024,NULL); //thread_t t4 = create_thread(0); //thread_start_run(t4,Routine4,NULL); /*thread_t t1 = create_thread(0); thread_start_run(t1,Routine1,NULL); thread_t t2 = create_thread(0); thread_start_run(t2,Routine2,NULL); thread_t t3 = create_thread(0); thread_start_run(t3,Routine3,NULL); */ getchar(); return 0; }
static void log_once_routine(){ //pthread_key_create(&g_log_key,NULL); llist_init(&g_log_file_list); sys_log = calloc(1,sizeof(*sys_log)); sys_log->filename = new_string(SYSLOG_NAME); g_mtx_log_file_list = mutex_create(); mutex_lock(g_mtx_log_file_list); LLIST_PUSH_BACK(&g_log_file_list,sys_log); mutex_unlock(g_mtx_log_file_list); pending_log = new_msgque(64,default_item_destroyer); g_log_thd = create_thread(THREAD_JOINABLE); thread_start_run(g_log_thd,log_routine,NULL); atexit(on_process_end); LOG(sys_log,LOG_INFO,"log open success"); }
asynnet_t asynnet_new(uint8_t pollercount) { if(pollercount == 0)return NULL; if(pollercount > MAX_NETPOLLER) pollercount = MAX_NETPOLLER; asynnet_t asynet = calloc(1,sizeof(*asynet)); if(!asynet) return NULL; asynet->poller_count = pollercount; //创建线程池 int32_t i = 0; for(; i < pollercount;++i) { asynet->netpollers[i].poller_thd = create_thread(THREAD_JOINABLE); asynet->netpollers[i].mq_in = new_msgque(32,mq_item_destroyer); asynet->netpollers[i].netpoller = new_service(); thread_start_run(asynet->netpollers[i].poller_thd,mainloop,(void*)&asynet->netpollers[i]); } return asynet; }
msgdisp_t new_msgdisp(asynnet_t asynet, ASYNCB_CONNECT on_connect, ASYNCB_CONNECTED on_connected, ASYNCB_DISCNT on_disconnect, ASYNCB_PROCESS_PACKET process_packet, ASYNCN_CONNECT_FAILED connect_failed) { //if(!asynet) // return NULL; msgdisp_t disp = calloc(1,sizeof(*disp)); disp->asynet = asynet; disp->mq = new_msgque(32,mq_item_destroyer); disp->on_connect = on_connect; disp->on_connected = on_connected; disp->on_disconnect = on_disconnect; disp->process_packet = process_packet; disp->connect_failed = connect_failed; disp->bind = asynnet_bind; disp->connect = asynnet_connect; disp->listen = asynnet_listen; return disp; }