コード例 #1
0
ファイル: testmq.c プロジェクト: Stan1990/KendyNet
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;
}
コード例 #2
0
ファイル: log.c プロジェクト: grasswin/KendyNet
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");
}
コード例 #3
0
ファイル: asynnet.c プロジェクト: cjl3080434008/luanet
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;
}
コード例 #4
0
ファイル: msgdisp.c プロジェクト: cjl3080434008/luanet
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;
}