• 2

{求救} C#高手有關THREAD的問題...

謝謝前面幾位大大給我的意見!!

以下是我嘗試過的寫法..
class g是全域變數,我嘗試寫過將判斷是否符合條件停止,寫進去first和second中,雖然不像百無一用大大那樣,會各跑一個比較一個。
我是想說,我在跑first的時候跑了2個,second還沒跑,等到後來second跑2個時first跑了4個,這樣總會符合停止條件了。因為一個是從1跑到6,另一個從6跑到1,總會交叉到符合條件的那個,只是差別在於是透過first還是second函式中的if來停止他們兩個函式而已。
所以不用一個一個比較應該也會停止.....

我認為我這樣應該是可以跑出來,可是不行= ="".......他會停在那裏...


class g
{
public static int p[] = new int[n]
public static int px[] = new int[n]

}


//如果我有兩個函式他們
各會創造出矩陣
public void first()
{
for(int i = 0;i<6;i++)
{
//內容產生p[1]p[2]....
}
for(nit i = 0 ; i<6 ;i++)
{
if(g.p[g.px]=i)
{
//用此內容來停止first和second函式

}


}
public void second()
{
for(int i = 6;i>0;i--)
{
//內容產生px[1]px[2]....
}
if(g.p[g.px]=i)
{
//用此內容來停止first和second函式

}



}

private void button1_Click(object sender, EventArgs e)
{

XXX();
}

public void XXX()

{
Thread thread1=new Thread(first);

thread1.Start();
second();
}
大概看了一下,
thread1跟thread2跑完for迴圈後不是就停了?
後續應該沒機會跑了吧?

你要不要講一下你到底想做甚麼?
有時候不是寫法有問題,
而是根本不對症..


iauwen wrote:
大概看了一下,
th...(恕刪)


正解呀~
onus wrote:
謝謝前面幾位大大給我...(恕刪)


if(g.p[g.px]=i)-->這是啥?
{
//用此內容來停止first和second函式

}
g是class

g.px是一個陣列

g.px[index]是陣列裡的一個元素

if(g.p[g.px]=i)
-------
為什麼裡面擺了一個陣列g.px
這樣不會出錯嗎?


而且thread不會那麼剛好
1執行一次就換2執行一次再換1執行一次
有可能1跑完了2根本就還沒執行(在cpu分配的時間內1就執行完了)
多核心更不用說了..
你如果不在thread裡去等待其他thread的執行
很難達到正確的結果

謝謝各位給的意見= =||


就是我想要firsts和econd他們同時運算,然後各自存資料到p[]和px[]

一存進去就比較,如果發生p[px[i]]=i,就將函式停止。就是不會讓first還有second跑完這樣


我之前有試著將判斷停止條件放入first和second,只是thread在執行的時候跟另外執行緒好像是獨立的,所以可能讀不到,

例如first判斷就讀不到px[],因為px[]需要second來寫入。







那個是我寫錯,應該要寫這樣= =||

p[px[i]]=i
  • 2
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?