int _tmain(int argc, _TCHAR* argv[])
{
	_lock = new spin_lock();	
	_posted.store(0);
	_iocp = CreateIoCompletionPort( INVALID_HANDLE_VALUE , NULL , NULL , 0 );

	std::cout << "start" << std::endl;
	std::chrono::time_point<std::chrono::system_clock> start, end;
	std::chrono::duration<double> elapsed_seconds;

	start = std::chrono::system_clock::now();    

	process_1();
	
	end = std::chrono::system_clock::now();
 
    elapsed_seconds = end-start;
    std::cout << "elapsed time: " << elapsed_seconds.count() << "s\n";
	start = std::chrono::system_clock::now();    

	process_0();

	end = std::chrono::system_clock::now(); 
    elapsed_seconds = end-start;
    std::cout << "elapsed time: " << elapsed_seconds.count() << "s\n";

	return 0;
}
/*-----------------------------------------------------
 * 10の位を文字へ
 *---------------------------------------------------*/
static char *process_10(int8_t num, int *p_flag, char *p_str)
{
    int    divide_10    = (int)(num / 10);
    int8_t remainder_10 = num % 10;
    char   val          = ASCII_NUMBER_0;
    int    i;
    
    for(i = 0; i < divide_10; i++)
    {
        val++;
    }
    
    p_str[*p_flag] = val;
    (*p_flag)++;
    
    return process_1(remainder_10, p_flag, p_str);
}
/*=====================================================
 * @brief
 *     char型の数値を文字列へ変換
 * @param
 *     num:変換したい数値
 * @return
 *     str:変換した文字列を格納した配列へのポインタ
 * @note
 *     -128 ~ 127の数値
 *===================================================*/
char *char_number_to_string(char num)
{
    static char str[5];
    int  flag = 0;
    char *p_error_message = "size of number is over";

    /* num == -128 process */
    if(num == INT8_T_MINIMUM)
    {
        str[0] = '-';
        str[1] = '1';
        str[2] = '2';
        str[3] = '8';
        str[4] = '\0';
        
        return str;
    }
   
    /* For negetive number process */
    if(num < 0)
    {
        str[flag] = '-';
        flag++;
        num *= (-1);
    }

    /* converting process */
    if(MIN_100 <= num && num <= MAX_100)
    {
        return process_100(num, &flag, str);
    }
    else if(MIN_10 <= num && num <= MAX_10)
    {
        return process_10(num, &flag, str);
    }
    else if(MIN_1 <= num && num <= MAX_1)
    {
        return process_1(num, &flag, str);
    }
    else
    {
        return p_error_message;
    }

}