執行緒控制之執行緒和I O

2022-05-04 20:06:15 字數 646 閱讀 5554

中介紹了pread和pwrite函式,這些函式在多執行緒環境下是非常有幫助的,因為程序中的所有執行緒共享相同的檔案描述符。

考慮兩個執行緒,在同一時間對同一檔案描述符進行讀寫操作。

執行緒a:

lseek(fd,

300, seek_set);

read(fd, buf1,

100);

執行緒b:

lseek(fd,

700, seek_set);

read(fd, buf2,

100);

為了解決這個問題,可是使用pread,是偏移量的設定和資料的讀取成為乙個原子操作。

執行緒a:

pread(fd, buf1,

100, 300

);執行緒b:

pread(fd, buf2,

100, 700);

使用pread可以確保執行緒a讀取偏移量為300的記錄,而執行緒b讀取偏移量為700的記錄。可以使用pwrite來解決併發執行緒對同一檔案進行寫操作的問題。

本篇博文內容摘自《unix環境高階程式設計》(第二版),僅作個人學習記錄所用。關於本書可參考:

執行緒控制之執行緒和訊號

每個執行緒都有自己的訊號遮蔽字,但是訊號的處理是程序中所有執行緒共享的。這意味著儘管單個執行緒可以阻止某些訊號,但當執行緒修改了與某個訊號相關的處理行為以後,所有的執行緒都必須共享這個處理行為的改變。程序中的訊號是遞送到單個執行緒的。如果訊號與硬體故障或計時器超時相關,該訊號就被傳送到引起該事件的執...

Linux之執行緒控制

執行緒控制 由於執行緒是後來才引用進來的,因此,在編譯鏈結時需要加 lpthread來引入外部庫 posix 建立執行緒 include 函式原型 int pthread create pthread t thread,const pthread attr t attr,void start rou...

執行緒控制 join執行緒

在我們做專案的時候時常會有這樣的一種需求 我們需要執行兩個方法,乙個方法要等另乙個方法執行完才能執行,這樣的狀況放到多執行緒中要怎麼實現呢?今天就來看看多執行緒中的join方法。我們的均方法通常是把乙個大問題分成許多小問題,每個小問題分配乙個執行緒,當所有的小問題都得到處理後,在呼叫主線程來進一步操...