生活随笔
收集整理的這篇文章主要介紹了
操作系统实践(八)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
??本次實驗課程內(nèi)容沒有更新,留了一個作業(yè),還是對于線程的訓(xùn)練,內(nèi)容如下:
??按照上節(jié)課的內(nèi)容,對代碼進(jìn)行下修改,如下:
#include
<stdlib
.h
>
#include
<stdio
.h
>
#include
<pthread
.h
>#define
NUMBER 10
#define
CPU_NUM 2
#define
CHILD (NUMBER/CPU_NUM)
int array
[10] = {12,7,9,10,11,16,3,5,7,20};struct param
{int start
;int end
;
};struct result
{int sum
[CHILD];
};void *select_sort(void *arg) {struct param
*param
;struct result
*result
;param
= (struct param
*)arg
; for (int i
=param
->start
; i
<param
->end
; i
++) {for (int j
=0; j
<param
->end
-i
-1; j
++) {if (array
[param
->start
+j
] > array
[param
->start
+j
+1]) {int temp
;temp
= array
[param
->start
+j
];array
[param
->start
+j
] = array
[param
->start
+j
+1];array
[param
->start
+j
+1] = temp
;}}}result
= malloc(sizeof(struct result
));for (int i
=0; i
<5; i
++) {result
->sum
[i
] = array
[param
->start
+i
];}return result
;
}int
main() {pthread_t son
[CPU_NUM]; struct param params
[CPU_NUM]; for (int i
=0; i
<CPU_NUM; i
++) {struct param
*param
; param
= ¶ms
[i
];param
->start
= i
*CHILD;param
->end
= (i
+1)*CHILD;pthread_create(&son
[i
], NULL, select_sort
, param
);}double sum
= 0;int son1
[CHILD]; int son2
[CHILD]; int ending
[10];for (int i
=0; i
<CPU_NUM; i
++) {struct result
*result
;pthread_join(son
[i
], (void **)&result
);if (i
== 0) {for (int j
=0; j
<CHILD; j
++) {son1
[j
] = result
->sum
[j
];}}else {for (int j
=0; j
<CHILD; j
++) {son2
[j
] = result
->sum
[j
];}}free(result
); }int p
,q
;int index
= 0;for (p
=0,q
=0; p
<CHILD&&q
<CHILD;) {if (son1
[p
] < son2
[q
]) {ending
[index
++] = son1
[p
++]; }else {ending
[index
++] = son2
[q
++];}}if (p
== CHILD) {for (;q
<CHILD;q
++) {ending
[index
++] = son2
[q
];}}else if (q
== CHILD) {for (;p
<CHILD;p
++) {ending
[index
++] = son1
[p
];}}for (int i
=0; i
<10; i
++) {printf("%d ", ending
[i
]);}return 0;
}
??對于這個代碼有幾個地方值得商榷:
??1.題中要求是選擇排序,但我用了冒泡排序。但不影響訓(xùn)練目標(biāo)
??2.這里使用了son1,son2存儲排序結(jié)果,顯得有些多余,不知道這樣可不可以?是否能在線程的邏輯語句中就把數(shù)據(jù)處理好。
??3.這里面對于待排序的數(shù)組設(shè)置為靜態(tài)數(shù)組,但擴(kuò)展性不夠好。應(yīng)當(dāng)動態(tài)統(tǒng)計排序個數(shù)。
因作者水平有限,如果錯誤之處,請在下方評論區(qū)指正,謝謝!
總結(jié)
以上是生活随笔為你收集整理的操作系统实践(八)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。