多執行緒多程序的簡單演示

2021-06-04 02:09:39 字數 1831 閱讀 3962

#include

#include

#include

#include

#include

#include

//multimode  0 : no multimode  1 : multithread 2 : multiprocess

#ifndef multimode

#define multimode 2

#endif

#define nloops  0x10000000

#define nloops  0x100000

//typedef struct targ__

typedef struct 

targ, *ptarg;

typedef struct

pinfo, *ppinfo;

static const int nthread = 10;

static const int nprocs = 10;

volatile double x = 0.0;

volatile char managerproc = 1;

void *tfunc( void *arg )

}else}}

int main( int argc, char *argv )

#endif

printf( "\n--------- ****** parellel performance test ---------\n" );

printf( "source  file : %s\n", __file__ );

printf( "excute  file : %s\n", argv[0] );

printf( "compile date : %s\n", __date__ );

printf( "compile time : %s\n", __time__ );

gettimeofday( &tstart, null );

#if ( multimode == 0 )

// no parellel

printf( "\nmultimode    :  single process\n\n" );

i = 0;

while( i < nloops )

#elif ( multimode == 1 )

//multithread

printf( "\nmultimode    :   multithread\n\n" );

for( j=0; jif( pidtmp < 0) 

goto err;

else 

if( pidtmp > 0 )//the manage process

else

}if( 0 == managerproc )// job process

exit(0);

}else //manager process

#endif

gettimeofday( &tend, null );

sec = tend.tv_sec - tstart.tv_sec;

usec = tend.tv_usec - tstart.tv_usec;

if( usec < 0 )

total = sec*1000 + usec/1000;

printf( "\nok done total time : %ld ms\n\n", total );

exit(0);

err:

printf( "multi process error exit\n" );

exit( -1 );

}

多執行緒 多程序?

這幾天在思考如何改進原型在多個客戶端的情況下的效能,特地溫習了一下多程序和多執行緒的一些知識。在linux下程序的程序和執行緒在核心看來區別很小,都是乙個可排程單元,都擁有記憶體管理結構等等。但是關鍵的差別是程序的資源都是私有的,而執行緒則是和別人共享的,所以執行緒的上下文切換可能比程序的開銷要小很...

多程序,多執行緒

多工程式設計 通過應用程式利用多個計算機核心達到多工同時執行的 目的,從此來提公升程式執行效率 多程序,多執行緒 程序 程式在計算機中一次執行的過程 程式 靜態的描述,不占有計算機資源 程序 是乙個動態的過程,占有cpu,記憶體等計算機資源 有一定的生命週期 同乙個程式,每次執行都是不同的程序,因為...

多執行緒 多程序

是什麼?能幹什麼?單執行緒情況下,執行效率低。系統的資源沒有得到充分利用。計算密集型 運算量比較大 io密集型 cpu空閒,輸入輸出較多 怎麼幹?爬蟲 io密集型 多執行緒 橫向 所有的程式的執行都在乙個執行緒中,程式啟動時,啟動多執行緒,每個執行緒跑同樣的 縱向 將程式進行拆分,每個執行緒跑特定的...