多執行緒裡的坑。
今天討論群裡有這樣乙個問題:
為什麼單執行緒比多執行緒訪問資料的速度更快。
multi_pthrea.c
#include
#include
#include
#include
#include
#include
#include
#include
#define num 300
#define pth_num 200
typedef
struct pointpoint,
*pp;
pid_t pid;
char temp[20]
;char
* pcur =
null
;//int fwrite;
point get_point()
return p;
}void
store_points
(int
* i)
close
(fwrite);}
void
main
(void
)// printf("parent,the tid=%lu\n",pthread_self());
for(i=
0;i++i)
end =
clock()
;double duration =
(double
)(end - start)
/ clocks_per_sec;
printf
("multipro4 need: %lf seconds\n"
, duration )
;return
;}
夥計執行的結果:
修改後的對比程式
#include
#include
#include
#include
#include
#include
#include
#include
#define num 300
#define pth_num 200
typedef
struct pointpoint,
*pp;
pid_t pid;
//int fwrite;
point get_point()
return p;
}void
store_points_sigle()
close
(fwrite);}
void
store_points
(int
* i)
close
(fwrite);}
intmain
(int argc,
char
* ar**)
for(i=
0;i++i)
end =
clock()
;double duration =
(double
)(end - start)
/ clocks_per_sec;
printf
("multi : %lf seconds\n"
, duration )
; start =
clock()
;store_points_sigle()
; end =
clock()
; duration =
(double
)(end - start)
/ clocks_per_sec;
printf
("sigle: %lf seconds\n"
, duration )
;return0;
}
修改後換了乙個環境, 沒有像夥伴說的 那樣,開多執行緒寫檔案然後比單執行緒耗費的時間更多。
我的執行結果:
但我執行在家裡電腦ubunt 16.02 服務版本,出現上面的結果。
我用14.04版本在家裡測試,也沒有那麼長時間。
我想應該是跟cpu效能有關。
等待被解決。
C 多執行緒處理
region 變數初始化 string tx 任務執行緒分派數 每次設定一組 一組十個執行緒 任務執行緒 限制最多十個執行緒 long threadcount 0 long maxthreadcount 10 manualreseteventslim manual new manualresetev...
多執行緒處理任務
進行任務分解 long begin system.currenttimemillis list futurelist this.getsmoothdatafuture fundidlist,30 阻塞等待所有執行緒全部執行完畢 for futurefuture futurelist log.info...
多執行緒處理任務
業務需求是這樣 接受大量效能資料,要求多執行緒處理效能資料,且在任一時刻同種效能資料只能有一條在處理。這裡有5個類 processscheduler 入口,用於接受效能資料,並將每條效能資料加到佇列中處理 actionexecutor 執行緒池包裝類 actionqueue 任務佇列類,用於儲存同種...