4444444444

来源:互联网 发布:淘宝公益宝贝标志 编辑:程序博客网 时间:2024/05/17 07:58
int main()  {      //初始化      ReadInitConfig("config.xml");        CURLcode res; //定义CURLcode类型的变量      pthread_t threads[10000];//PID    int i, ret;      struct HttpGetParam httpGetParams[10000];      pthread_attr_t thread_attr;    size_t stack_size;QueryPerformanceFrequency(&m_nFreq); // 获取CPU时钟周期    m_PacketUseTime.clear();      res = curl_global_init(CURL_GLOBAL_ALL);      if (res != CURLE_OK)      {          printf( "Failed to global init default [%d]\n", res );          return 1;      }             memset(threads, 0, sizeof(threads));      memset(httpGetParams, 0, sizeof(httpGetParams));            for ( i = 0; i < configvalues.MaxThread; i++)      {          //目标URL          //httpGetParams[i].url = "http://127.0.0.1";          httpGetParams[i].url = configvalues.DefaultUrl;      }      pthread_mutex_init(&mutex, NULL);        //初始化线程锁        //printf("PTHREAD_STACK_MIN=%d\r\n", PTHREAD_STACK_MIN);          pthread_attr_init(&thread_attr);      pthread_attr_getstacksize(&thread_attr, &stack_size);            //printf("Default stack size is %u; minimum is %u\n", stack_size, PTHREAD_STACK_MIN);      //设置线程栈大小,这里设置成了1M,这个可能需要根据情况调,最小不能小于PTHREAD_STACK_MIN,如果太小有可能出现栈溢出      pthread_attr_setstacksize(&thread_attr, 2*1024 * 1024);      pthread_attr_getstacksize(&thread_attr, &stack_size);              //printf("New stack size is %u; minimum is %u\n", stack_size, PTHREAD_STACK_MIN);      for ( i = 0; i < configvalues.MaxThread; i++)      {          //创建线程,threads线程ID           ret = pthread_create(&threads[i], &thread_attr, http_get, (void *)&httpGetParams[i]);  if (0 != ret)          {              perror("pthread_create failed!!! The reason is:");            }Sleep(1);    }gets(Putkey);if(!strcmp(Putkey, "q")){pthread_attr_destroy(&thread_attr);    Sleep(2000);//等待退出  for ( i = 0; i <configvalues.MaxThread ; i++)  {  if (threads[i].p != 0)  {  pthread_cancel(threads[i]);  pthread_join(threads[i], NULL);  //pthread_mutex_unlock(&mutex[i]);            //解锁  }  }pthread_mutex_destroy(&mutex);    printf("SendPaket ------- %d\r\n", configvalues.MaxThread * configvalues.SendCount);  printf("Success --------- %d\r\n", SucceNum);  if(!m_PacketUseTime.empty())  {  printf("MaxUesTime ------ %f\r\n", *max_element(m_PacketUseTime.begin(), m_PacketUseTime.end()));  printf("MinUesTime ------ %f\r\n", *min_element(m_PacketUseTime.begin(), m_PacketUseTime.end()));  printf("AverageTime ----- %f\r\n", accumulate(m_PacketUseTime.begin(), m_PacketUseTime.end(), 0)/(double)m_PacketUseTime.size());  }  else  {  printf("there is not have any data for time log!!\r\n");   }}system("pause");    return 0;  }  

 
原创粉丝点击