一 代码结构
二 代码详解
1. test.cpp
?
/*************************************************************************
> File Name: test.cpp
> Author: wangzhicheng
> Mail: 2363702560@qq.com
> Created Time: Thu 26 Feb 2015 09:35:49 PM WST
************************************************************************/
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std; void* fun(void *arg) { return NULL; } void g() { } int main() { int i; pid_t pid; pthread_t tid; struct timeva l tv1, tv2; unsigned long long elapse; /* * create processes * */ /* gettimeofday(&tv1, NULL); for(i = 0;i < 1000;i++) { pid = fork(); if(pid < 0) { perror(fork error...! ); exit(EXIT_FAILURE); } else if(!pid) { exit(0); } else { wait(NULL); } } gettimeofday(&tv2, NULL); elapse = (tv2.tv_sec - tv1.tv_sec) * 1e6 +(tv2.tv_usec - tv1.tv_usec); cout << elapse << endl; // 2.7026s */ /* * create POSIX threads */ gettimeofday(&tv1, NULL); for(i = 0;i < 1000;i++) { if(pthread_create(&tid, NULL, fun, NULL)) { perror(threads create error..! ); exit(EXIT_FAILURE); } pthread_join(tid, NULL); } gettimeofday(&tv2, NULL); elapse = (tv2.tv_sec - tv1.tv_sec) * 1e6 +(tv2.tv_usec - tv1.tv_usec); cout << elapse << endl; // 1.591s /*www.2cto.com * create c++11 threads */ /* gettimeofday(&tv1, NULL); for(i = 0;i < 1000;i++) { thread mythread(g); mythread.join(); } gettimeofday(&tv2, NULL); elapse = (tv2.tv_sec - tv1.tv_sec) * 1e6 +(tv2.tv_usec - tv1.tv_usec); cout << elapse << endl; // 1.848s */ return 0; }
2. makfile
?
?
CC=g++
all:
$(CC) -std=c++0x -g -o test test.cpp -pthread -lpthread
?