2012-10-28 79 views
-1

我正在創建一個項目,我們必須創建一些線程(實際的數字將由測試人員(TA's)輸入)。我不僅在編程方面遇到麻煩,而且在設計方面也遇到了麻煩,我無法將自己的頭圍繞所有將被調用的線程以及可能導致錯誤的地方。該項目即將到期,所以我不想浪費時間在這個上,如果它實際上讓我回來,但我想知道我是否應該編寫程序,如只有一個線程將運行,一切都應該是順序的,然後再回去嘗試添加代碼的線程安全部分?這需要兩倍的原始時間?併發編程:我應該先編寫一個順序程序,然後添加線程安全嗎?

項目描述: 注:我要儘可能模糊,所以我沒有違反任何榮譽守則,抱歉:(

你的程序應該接受對象A的線程數n,m個對象B線程,objectC

的數目爲r

對象B線程的代碼在對象A互動 對象A的線程與對象B和objectC 對象B和objectC不直接交互代碼交互,而是通過對象A -EX這樣做間接: objectB需要objectA中的一些東西,objectA通過獲得該東西的結果調用對象C

我的困惑主要來自這樣一個事實,即所有這些交互都將由m + n個線程完成,並且在整個描述中存在各種限制,例如objectB可以從objectA請求某些東西,並且objectA必須等待objectC在返回objectB之前完成某件事情。另外每個objectA線程一次只能在objectB的一條指令上工作,等等。等等。

我只想知道我是否寫了代碼,以便只有1個objectA,1個objectB和1個對象C,可以我回去並輕鬆修改它,以便那些1可以更改爲m,n和r?

對不起,如果我的描述有點混亂。

+0

能否介紹一下實際項目 – jozefg

+0

n> 1個線程必須等待對方纔沒有意義(或很少)。 – ignis

+0

@ignis,把每個對象想象成現實生活中的東西,比如objectA是一個機械師,objectB是汽車等等。 – evthim

回答

1

我想知道是否應該編寫程序,如只有一個線程將運行,並且一切都應該是順序的,然後再返回並嘗試添加代碼的線程安全部分?

我會得到程序使用最少的線程首先工作。然後我會重新編寫它以使用多個線程。你不應該低估這可能需要多少工作,當你這樣做時你必須重新訪問你所有的假設。

會花費兩倍的原始時間?

至少兩倍長,但它更有可能工作。如果你試圖一次完成所有的事情,那麼你最終可能會陷入一片混亂,根本無法工作。如果你有努力的標誌,如果你有時會遇到線程安全問題並不重要,那麼一次完成的方法可能會給你最好的分數。如果你正在專業開發,那麼使用多線程處理一些線程比使用多線程的一些罕見且不可重複的錯誤要好得多。

相關問題