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++)
{
//內容
}
}
}
public void second()
{
for(int i = 6;i>0;i--)
{
//內容
}
}
//分別是
p[1]=-1 p[2]=1 p[3]=2 p[4]=-1 p[5]= -1 p[6]=3
px[1]=2 px[2]=3 px[3]=6 px[4]=-1 px[5]= -1 px[6]=-1
//我想要在同時運算並且利用 p[3]=2 ,px[2]=3,在那兩個函式運行到一半的時候就會停止。
//因為我要平行運算所以要使用Thread
//那我現在用一個按鍵觸發
private void button1_Click(object sender, EventArgs e)
{
·
XXX();
}
·
public void XXX()
·
{
Thread thread1=new Thread(first);
Thread thread2=new Thread(second);
thread1.Start();thread2.Start();
while(){
for(nit i = 0 ; i<6 ;i++)
{
if(g.p[g.px]=i)
{
//用此內容來停止函式
MessageBox.Show("END")};
}
}
}
可是以上跑不出來
,我是想要first和second一起跑,因為不斷檢查p[]和px[]的關係,所以兩個函式沒跑完就可以停止跳出來,請問一下我這樣是哪裡有問題???
我是新手= ="""請多多包涵...
就是我想要firsts和econd他們同時運算,然後各自存資料到p[]和px[]
一存進去就比較,如果發生p[px[i]]=i,就將函式停止。
我之前有試著將判斷停止條件放入first和second,只是thread在執行的時候跟另外執行緒好像是獨立的,所以可能讀不到,
例如first判斷就讀不到px[],因為px[]需要second來寫入。
所以我將判斷停止的if寫在外面。
所以沒有辦法在兩條執行緒同時運算時,然後在他們存入外面的一個共通的class,一存入就判斷停就是否符合,接著停止那兩個函式嗎?

有興趣參考看看~
皮小哥 wrote:
使用全域變數
在fi...(恕刪)
如皮小哥說的用全域變數控制,
bool g_fisrt_flag=false;
bool g_second_flag=false;
int g_A_value;
int g_B_value;
first()
{
...
for (i=0;i<6;i++)
{
fisrt_flag=false;
...
//算出來A_value=xx 等另一支function的結果
....
//更動secord 的flag
second_flag=true;
//sleep 等另一個function run 完
while (fisrt_flag==false)
{thread.sleep(1000);}
//進行比對,符合的話 離開first
//不符合 for loop 跑下一個值
if (A_value==B_value)
{....}
}
...
}
second()
{
...
for (i=0;i<6;i++)
{
second_flag=false;
...
//算出來A_value=xx 等另一支function的結果
//更動first 的flag
first_flag=true;
//sleep 等另一個function run 完
while (second_flag==false)
{thread.sleep(1000);}
//進行比對,符合的話 離開second
//不符合 for loop 跑下一個值
if (A_value==B_value)
{....}
}
...
}
藥醫不死病,佛渡有緣人
不就是 矩陣A[矩陣B[I]] = I .... 怎麼會用到同時執行的問題?

太深奧了...
Global $P[7],$Px[7]
Global $Var = 0
Do
For $i = 1 to 6
$P[$i] = Random(1, 6, 1)
$Px[$i] = Random(1, 6, 1)
ConsoleWrite("P:["&$i&"] = "&$P[$i]&@CRLF)
ConsoleWrite("Px:["&$i&"] = "&$Px[$i]&@CRLF)
Next
For $i = 1 to 6
if $P[$Px[$i]] = $i Then
$Var = 1
ExitLoop
EndIf
Next
Until $Var = 1
MsgBox(64,"END","P:["&$i&"] "&" : "&"Px:["&$i&"] ")
內文搜尋
X


























































































