Beispiel #1
0
static void on_mail(kn_thread_mailbox_t *from,void *mail){
	mysql_request_t request = (mysql_request_t)mail;
	do{	
		int ret =mysql_real_query(mysqlConn->mysqlConn,request->req,request->len);
		if(ret == 0){
			printf("success\n");
			break;
		}else{
			ret = mysql_errno(mysqlConn->mysqlConn);
			if (ret == 2013 || ret == 2006 ||ret == 2003)
			{   // 2013CR_SERVER_LOST 2006 (CR_SERVER_GONE_ERROR)  2003 CR_CONN_HOST_ERROR 
				int count = 0;
				while (!mysqlReconnect(mysqlConn->mysqlConn)) {
					if (++count > MAX_RECONN_COUNT) 
					{
						mysqlConn->error = ret;
						kn_stop_engine(mysqlConn->engine);
						return;
					}
					kn_sleepms(1000);
				}
			} 
			else{
				printf("sql error:%d\n",ret);
				break;
			}	
		}
	}while(1);	 
}
Beispiel #2
0
int main(){

	kn_thread_t t1 = kn_create_thread(THREAD_JOINABLE);
	kn_thread_t t2 = kn_create_thread(THREAD_JOINABLE);	
	kn_thread_start_wait(t1,routine11,NULL);
	kn_thread_start_wait(t2,routine22,NULL);		

	while(1){
		kn_sleepms(1000);		
	}	
	return 0;
}
Beispiel #3
0
int main(){	
	kn_thread_t t1 = kn_create_thread(THREAD_JOINABLE);
	kn_thread_t t2 = kn_create_thread(THREAD_JOINABLE);
	//kn_thread_t t3 = kn_create_thread(THREAD_JOINABLE);
	channel1 = kn_new_channel(kn_thread_getid(t1));
	channel2 = kn_new_channel(kn_thread_getid(t2));
	kn_thread_start_run(t1,routine1,NULL);
	kn_thread_start_run(t2,routine2,NULL);
	//kn_thread_start_run(t3,routine2,NULL);
	while(1){
		kn_sleepms(100);
	}
	return 0;
}
Beispiel #4
0
void *routine1(void *arg)
{
	printf("routine1\n");
	int i = 0;
	kn_msgque_writer_t writer = kn_open_writer(msgque);
	while(1){
		for(i = 0; i < 10000000; ++i){
			kn_msgque_write(writer,(void*)1,NULL);
		}
		kn_msgque_flush(writer);
		kn_sleepms(1);
	}
    return NULL;
}
Beispiel #5
0
//单向
void *routine11(void *arg)
{
	printf("routine11\n");
	while(is_empty_ident(mailbox2)){
		FENCE();
		kn_sleepms(1);
	}	
	int i;
	while(1){
		for(i = 0; i < 50000; ++i){
			kn_send_mail(mailbox2,(void*)1,NULL);
		}
		//kn_sleepms(100);
	}
    return NULL;
}
Beispiel #6
0
void *routine1(void *arg)
{
	printf("routine1\n");
	engine_t p = kn_new_engine();
	kn_setup_mailbox(p,on_mail1);
	while(is_empty_ident(mailbox2)){
		FENCE();
		kn_sleepms(1);
	}
	int i = 0;
	for(; i < 10000; ++i){
		kn_send_mail(mailbox2,(void*)1,NULL);
	}
	kn_engine_run(p);
    return NULL;
}
Beispiel #7
0
//单向
void *routine11(void *arg)
{
	printf("routine11\n");
	while(!pid)kn_sleepms(1);
	kn_thread_mailbox_t mailbox = kn_query_mailbox(pid);
	if(is_empty_ident((ident)mailbox)){
		printf("error\n");
		exit(0);
	}	
	int i;
	while(1){
		for(i = 0; i < 50000; ++i){
			kn_send_mail(mailbox,(void*)1,NULL);
		}
		//kn_sleepms(100);
	}
    return NULL;
}
Beispiel #8
0
void *routine1(void *arg)
{
	printf("routine1\n");
	engine_t p = kn_new_engine();
	kn_setup_mailbox(p,on_mail1);
	while(!pid)kn_sleepms(1);
	kn_thread_mailbox_t mailbox = kn_query_mailbox(pid);
	if(is_empty_ident((ident)mailbox)){
		printf("error\n");
		exit(0);
	}
	int i = 0;
	for(; i < 10000; ++i){
		kn_send_mail(mailbox,(void*)1,NULL);
	}
	kn_engine_run(p);
    return NULL;
}
Beispiel #9
0
int main(){

	msgque = kn_new_msgque(32);
	kn_thread_t t1 = kn_create_thread(THREAD_JOINABLE);
	kn_thread_t t2 = kn_create_thread(THREAD_JOINABLE);	
	kn_thread_start_run(t1,routine1,NULL);
	kn_thread_start_run(t2,routine2,NULL);		
 	uint64_t tick,now;
    tick = now = kn_systemms64();	
	while(1){
		kn_sleepms(100);
        now = kn_systemms64();
		if(now - tick > 1000)
		{
            uint32_t elapse = (uint32_t)(now-tick);
			printf("count:%d\n",count/elapse*1000);
			tick = now;
			count = 0;
		}		
	}	
	return 0;
}