兩個執行緒共享乙個資料的實驗

2021-08-14 05:24:06 字數 807 閱讀 5573

#include #include #include #include int counter=0;/*兩個執行緒都能修改的共享變數 */

void thread1(void *arg);

void thread2(void *arg);

int main(int argc, char *argv)

void thread1(void *arg)/*第1個執行緒執行***/}

void thread2(void *arg)/*第2個執行緒執行***/

輸出結果為5,兩個執行緒一直在爭用資料,互相串改資料,為什麼這麼說呢

做了以下的實驗,改變了執行緒的睡眠時間2個

sleep

都為2  

結果不變

第乙個為

3 第二個為

2 結果不變

第乙個為

2 第二個為

3  結果變為6

程式加上互斥鎖

void thread1(void *arg)/*第1個執行緒執行***/

}

輸出結果變為10,並且先執行完執行緒一,再執行執行緒二

乙個陣列實現兩個棧 共享棧

問題分析 在順序棧的實現中,元素入棧是從下標為0的位置向上增長的,出棧是通過size 實現的。要想用乙個陣列實現2個棧,可以除了下標從0開始增長,還同時讓另乙個棧下標從size 1處開始減少。問題解決 定義top1,top2分別代表2個棧棧頂的下乙個位置的下標。棧1入棧時,元素放入top1位置,再使...

乙個陣列實現兩個棧

題目 乙個陣列a 1.n 來實現兩個棧,使得兩個棧中的元素總和不到n時,兩個都不會發生上溯。思路 1 建立乙個陣列,分別從兩邊開始,依次往中間走。思路 2 建立乙個陣列,乙個走奇數字,乙個走偶數字。奇偶方式 define crt secure no warnings includeusing nam...

乙個陣列實現兩個棧

乙個陣列實現兩個棧,和 共享棧其實是很類似的。有兩種方式實現 看圖就知道 一種是兩個棧增長方向一樣的 另一種起始位置分別在棧的兩端,往中間增長。方法一 增長方向一樣 方法 把陣列下標分為奇數和偶數 分別給兩個棧使用 如下 我在程式中注釋的 部分,可以放開 看看是什麼效果,注釋掉的那部分是我剛開始的想...