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