int main() { gVar = (int *)malloc((sizeof(int))*CL*RTN); inittest(); gq = Queue_new(); t0 = clock(); printf("Starting Test 1 ...\n"); start_multi(0); wait_multi(); //t2 = clock(); //if ( checkresult != 0 ) // return -1; printf("TEST 1 , Multi In.\n"); printf(" PUT USE : %f seconds\n", (double)(t1 - t0) / CLOCKS_PER_SEC); //printf(" GET USE : %f seconds\n", (double)(t2 - t0) / CLOCKS_PER_SEC); t0 = clock(); printf("Starting Test 2 ...\n"); start_multi(1); wait_multi2(); //t1 = clock(); if ( checkresult() != 0 ) return -1; printf("TEST 2 , Multi Out.\n"); //printf(" PUT USE : %f seconds\n", (double)(t1 - t0) / CLOCKS_PER_SEC); printf(" GET USE : %f seconds\n", (double)(t2 - t0) / CLOCKS_PER_SEC); inittest(); gq = Queue_new(); t0 = clock(); printf("Starting Test 3 ...\n"); start_multi(0); single_get(); t2 = clock(); wait_multi(); if ( checkresult() != 0 ) return -1; printf("TEST 3 , Multi In Single Out.\n"); printf(" PUT USE : %f seconds\n", (double)(t1 - t0) / CLOCKS_PER_SEC); printf(" GET USE : %f seconds\n", (double)(t2 - t0) / CLOCKS_PER_SEC); inittest(); gq = Queue_new(); t0 = clock(); printf("Starting Test 4 ...\n"); single_put(); t1 = clock(); printf("TEST 4 , Single In .\n"); printf(" PUT USE : %f seconds\n", (double)(t1 - t0) / CLOCKS_PER_SEC); //printf(" GET USE : %f seconds\n", (double)(t2 - t0) / CLOCKS_PER_SEC); t0 = clock(); printf("Starting Test 5 ...\n"); start_multi(2); wait_multi2(); //t1 = clock(); if ( checkresult() != 0 ) return -1; printf("TEST 5 , Multi Out 2.\n"); //printf(" PUT USE : %f seconds\n", (double)(t1 - t0) / CLOCKS_PER_SEC); printf(" GET USE : %f seconds\n", (double)(t2 - t0) / CLOCKS_PER_SEC); inittest(); gq = Queue_new(); t0 = clock(); printf("Starting Test 6 ...\n"); start_multi(0); start_multi(1); wait_multi(); wait_multi2(); if ( checkresult() != 0 ) return -1; printf("TEST 6 , Multi In Multi Out.\n"); printf(" PUT USE : %f seconds\n", (double)(t1 - t0) / CLOCKS_PER_SEC); printf(" GET USE : %f seconds\n", (double)(t2 - t0) / CLOCKS_PER_SEC); inittest(); gq = Queue_new(); t0 = clock(); printf("Starting Test 7 ...\n"); start_multi(0); start_multi(2); wait_multi(); wait_multi2(); if ( checkresult() != 0 ) return -1; printf("TEST 7 , Multi In Multi Out 2.\n"); printf(" PUT USE : %f seconds\n", (double)(t1 - t0) / CLOCKS_PER_SEC); printf(" GET USE : %f seconds\n", (double)(t2 - t0) / CLOCKS_PER_SEC); return 0; }
int CmdLineParser::get_option(char** val) { CmdLineParser::Option* opt_obj; if (!_argv) { THROW("unexpected"); } if (_multi_args) { THROW("in multi args mode"); } if (_done) { THROW("is done"); } int long_index; int opt = getopt_long(_argc, _argv, _short_options.c_str(), &_long_options[0], &long_index); switch (opt) { case 0: { if (!(opt_obj = find(_long_options[long_index].val))) { THROW("long option no found"); } #ifdef DISABLE_ABBREVIATE int name_pos = (opt_obj->type == REQUIRED_ARGUMENT && optarg[-1] != '=') ? optind - 2 : optind - 1; std::string cmd_name(_argv[name_pos] + 2); if (cmd_name.find(opt_obj->name) != 0) { Platform::term_printf("%s: invalid abbreviated option '--%s'\n", _argv[0], cmd_name.c_str()); return OPTION_ERROR; } #endif if (opt_obj->seperator) { *val = start_multi(optarg, opt_obj->seperator); } else { *val = optarg; } opt_obj->is_set = true; return opt_obj->id; } case -1: { *val = NULL; if (!_positional_args && optind != _argc) { Platform::term_printf("%s: unexpected positional arguments\n", _argv[0]); return OPTION_ERROR; } if ((opt_obj = find_missing_opt())) { Platform::term_printf("%s: option --%s is required\n", _argv[0], opt_obj->name.c_str()); return OPTION_ERROR; } _done = true; return OPTION_DONE; } case '?': if (optopt >= 255) { opt_obj = find(optopt); ASSERT(opt_obj); #ifdef DISABLE_ABBREVIATE std::string cmd_name(_argv[optind - 1] + 2); if (cmd_name.find(opt_obj->name) != 0) { Platform::term_printf("%s: invalid option '--%s'\n", _argv[0], cmd_name.c_str()); return OPTION_ERROR; } #endif Platform::term_printf("%s: option --%s requires an argument\n", _argv[0], opt_obj->name.c_str()); } else if (optopt == 0) { Platform::term_printf("%s: invalid option '%s'\n", _argv[0], _argv[optind - 1]); } else if ((opt_obj = find((char)optopt))) { Platform::term_printf("%s: option '-%c' requires an argument\n", _argv[0], opt_obj->short_name); } else { Platform::term_printf("%s: invalid option '-%c'\n", _argv[0], char(optopt)); } return OPTION_ERROR; default: if (opt > 255 || !(opt_obj = find((char)opt))) { *val = NULL; return OPTION_ERROR; } if (opt_obj->seperator) { *val = start_multi(optarg, opt_obj->seperator); } else { *val = optarg; } opt_obj->is_set = true; return opt_obj->id; } }