2020 08 14 多執行緒處理處理不當帶來的坑

2021-10-09 04:47:56 字數 2284 閱讀 6725

多執行緒裡的坑。

今天討論群裡有這樣乙個問題:

為什麼單執行緒比多執行緒訪問資料的速度更快。

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 任務佇列類,用於儲存同種...