題目一:有四個執行緒1、2、3、4,分別為4個檔案a、b、c、d寫入字元,
其中,執行緒1每隔200毫秒才能寫入乙個字元,
執行緒2每隔400毫秒才能寫入乙個字元,
執行緒3每隔600毫秒才能寫入乙個字元,
執行緒4每隔800毫秒才能寫入乙個字元。
4個執行緒同時工作,模擬雲儲存寫入功能,將從終端輸入字串資訊分別存到abcd四個檔案,要求每個字元只能被儲存到乙個檔案,全部資訊儲存完畢後要給出相應提示。
#include
#include
#include
#include
pthread_mutex_t lock = pthread_mutex_initializer;
pthread_cond_t cond = pthread_cond_initializer;
file *fp1 = null,*fp2 = null,*fp3 = null,*fp4 = null;
//char c = 『a』;
char c;
int i =0;
void *thread_func0()
printf(「生產者:%c\n」,c);
i++;
pthread_mutex_unlock(&lock);
printf(「出鎖0\n」);
pthread_cond_signal(&cond);
printf("-----------------------生產者---------------------------\n");
}
printf("finnish!\n");
}
void *thread_func1()
while(1)
printf("消費者1繼續執行\n");
i--;
printf("a:%c\n",c);
fputc(c,fp1);
fflush(fp1);
pthread_mutex_unlock(&lock);
printf("出鎖1\n");
printf("-----------------------消費者1---------------------------\n");
}void *thread_func2()
printf(「消費者2繼續執行\n」);
i --;
printf(「b:%c\n」,c);
fputc(c,fp2);
fflush(fp2);
pthread_mutex_unlock(&lock);
printf(「出鎖2\n」);
printf("-----------------------消費者2---------------------------\n");}}
void *thread_func3()
printf(「消費者3繼續執行\n」);
i --;
printf(「c:%c\n」,c);
fputc(c,fp3);
fflush(fp3);
pthread_mutex_unlock(&lock);
printf(「出鎖3\n」);
printf("-----------------------消費者3---------------------------\n");}}
void *thread_func4()
printf("消費者4繼續執行\n");
i --;
printf("d:%c\n",c);
fputc(c,fp4);
fflush(fp4);
pthread_mutex_unlock(&lock);
printf("出鎖4\n");
printf("-----------------------消費者4---------------------------\n");
}}int main()
fclose(fp1);
fclose(fp2);
fclose(fp3);
fclose(fp4);
return 0;
c 多執行緒thread操作(二)執行緒管理
c 多執行緒thread操作 一 環境部署 c 多執行緒thread操作 二 執行緒管理 c 多執行緒thread操作 三 資料競爭互斥訪問 c 多執行緒thread操作 四 死鎖的問題和解決 c 多執行緒thread操作 五 unique lock加鎖 c 多執行緒thread操作 六 條件變數的...
SWT多執行緒 關於非UI執行緒操作UI執行緒(二)
隨後需要在乙個新開啟的視窗後啟動乙個執行緒讀取乙個物件並按秒重新整理介面顯示。仍然使用非同步執行緒實現。方法為 1 建立乙個執行緒 public class testthread extends thread public void run catch exception e display.asy...
多執行緒(二) 常用操作方法
public thread runnable target 構造方法 public thread runnable target,string name 構造方法,建立執行緒的時候設定名稱 public final synchronized void setname string name 設定執行...