注册账号 登录
小春网 返回首页

崖上のオッサン的个人空间 https://www.incnjp.com/?192660 [收藏] [复制] [分享] [RSS]

日志

【暇つぶし】pthreadテスト~ 

已有 331 次阅读2013-7-6 11:36 |系统分类:闲谈

#include <string>
#include <iostream>

#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <time.h>
#include <unistd.h>
#include <sys/resource.h>
#include <sys/time.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <pthread.h>

void msleep( long sleeptime )
{
  struct timespec timemic, rem;
  timemic.tv_sec = (time_t)( sleeptime / 1000 );
  timemic.tv_nsec = (sleeptime % 1000) * 1000 * 1000;
  nanosleep(&timemic, &rem);
}

void makedir( char* dir ){
  mode_t mode = S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH;
  mkdir(dir,mode);
}

void setlimit(){
  struct rlimit lm;
  getrlimit(RLIMIT_NOFILE,&lm);
  lm.rlim_cur = 50000;
  lm.rlim_max = 50000;
  setrlimit(RLIMIT_NOFILE,&lm);
}


void* transact(void* arg) {
  int* num = (int*) arg;
  printf("start pthread_id[%d] number[%d]\n",pthread_self(),*num);
  try{
    char dir[256];
    sprintf(dir,"./dat/%d",*num);
    makedir(dir);
    char fname[256];
    for (int i=0;i<1000;i++){
      sprintf(fname,"./dat/%d/%d.txt",*num,i);
      int fd = open(fname,O_RDWR | O_CREAT);
      if (fd == -1){
        printf("error open file [%d][%d]\n",*num,pthread_self());
        return NULL;
      }
      printf("file open[%d][%s][%d]\n",fd,fname,pthread_self());
      write(fd,(const void*)fname,256);
      msleep(10);
    }
  }catch(...){
  }
  msleep(1000);
  printf("end pthread_id[%d] number[%d]\n",pthread_self(),*num);
  return NULL;
}

int main(){
  setlimit(); 
  makedir("./dat");
  // スレッドループ数設定
  int THREAD_NUM = 10;
  // スレッド起動
  pthread_t pthread[THREAD_NUM];
  printf("Thread Create Loop Start\n");
  for (int i=0;i<THREAD_NUM;i++){
    int* num = new int(i);
    pthread_create(&pthread[i], NULL, (void*(*)(void*)) transact, (void*)num);
  }
  printf("Thread Create Loop End\n");
  printf("Thread Join Loop Start\n");
  for (int i=0;i<THREAD_NUM;i++){
    pthread_join((pthread_t) pthread[i],NULL);
  }
  printf("Thread Join Loop End\n");
  exit(0);
}


悲剧

无聊

震惊

支持

不解

超赞

愤怒

高兴

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册账号

小春网
常务客服微信
微信订阅号
手机客户端
扫一扫,查看更方便! 返回顶部