C言語学習ノート(三)
2225 ワード
1.文字列の右端にあるスペースを削除し、文字列を出力します.
2.1つの配列の最大値と2番目の大きな値を見つける
sleep()関数
sleepとwaitの違い:
1、sleepはThreadの静的メソッドであり、waitはObjectのメソッドであり、どのオブジェクトインスタンスでも呼び出すことができる.
2、sleepはロックを解放せず、ロックを占有する必要もありません.waitはロックを解放しますが、現在のスレッドがロックを占有していることを前提として呼び出されます(つまり、コードはsynchronizedにあります).
3、それらはすべてinterrupted方法で中断することができる.
具体的には、
Thread.Sleep(1000)は、今後1000ミリ秒以内に本スレッドがCPU競合に参加しないことを意味し、1000ミリ秒が経過した後、別のスレッドがCPUを使用している可能性がある場合、オペレーティングシステムはそのスレッドが保留または終了するまでCPUを再割り当てしない.すなわち、この時点でオペレーティングシステムがCPU割り当てを行う番になる.では、現在のスレッドが総優先度が最も高いとは限らず、CPUは他のスレッドに奪われる可能性があります.もう一つ注目すべきはSleep(0)の役割は,オペレーティングシステムが直ちにCPU競合を再開することをトリガし,競合の結果,現在のスレッドがCPU制御権を獲得している可能性があり,別のスレッドに変換してCPU制御権を獲得している可能性がある.
wait(1000)は、ロックを1000ミリ秒解放することを示し、時間後にロックが他のスレッドによって占有されていない場合、再びロックが得られ、waitメソッドが終了し、後続のコードが実行され、ロックが他のスレッドによって占有されている場合、他のスレッドがロックを解放するのを待つ.タイムアウト時間を設定したwaitメソッドは、タイムアウト時間が過ぎると、他のスレッドがnotifyを実行しなくても自動的にブロックを解除できますが、タイムアウト時間を設定していないwaitメソッドは、他のスレッドがnotifyを実行するのを待つ必要があります.
1 #include
2 #include
3
4
5
6
7
8 int main()
9 {char str[20]="he llo world!";
10 int i,j,pos;
11 pos=strlen(str);
12 for(i=pos-1;i>=0;i--)
13 {if(str[i]==' ') // ,
14 {
15 for(j=i+1;j
2.1つの配列の最大値と2番目の大きな値を見つける
1 #include
2
3 int main()
4 { int a[10]={1,2,8,5,4,7,23,23,2,4};
5 int MAX=a[0];
6 int SECMAX=a[1];
7 int i;
8 for (i=1;i<10;i++)
9 { if (a[i]>=MAX)
10 { SECMAX=MAX;
11 MAX=a[i];
12 }
13 else if(a[i]>SECMAX)
14 {
15 SECMAX=a[i];
16 }
17
18 printf("%d
",a[i]);
19 }
20 printf("%d
",MAX);
21 printf("%d
",SECMAX);
22 return(0);
23 }
3. sleep()関数
#include Sleep ,, , , Sleep(1000) 1
sleepとwaitの違い:
1、sleepはThreadの静的メソッドであり、waitはObjectのメソッドであり、どのオブジェクトインスタンスでも呼び出すことができる.
2、sleepはロックを解放せず、ロックを占有する必要もありません.waitはロックを解放しますが、現在のスレッドがロックを占有していることを前提として呼び出されます(つまり、コードはsynchronizedにあります).
3、それらはすべてinterrupted方法で中断することができる.
具体的には、
Thread.Sleep(1000)は、今後1000ミリ秒以内に本スレッドがCPU競合に参加しないことを意味し、1000ミリ秒が経過した後、別のスレッドがCPUを使用している可能性がある場合、オペレーティングシステムはそのスレッドが保留または終了するまでCPUを再割り当てしない.すなわち、この時点でオペレーティングシステムがCPU割り当てを行う番になる.では、現在のスレッドが総優先度が最も高いとは限らず、CPUは他のスレッドに奪われる可能性があります.もう一つ注目すべきはSleep(0)の役割は,オペレーティングシステムが直ちにCPU競合を再開することをトリガし,競合の結果,現在のスレッドがCPU制御権を獲得している可能性があり,別のスレッドに変換してCPU制御権を獲得している可能性がある.
wait(1000)は、ロックを1000ミリ秒解放することを示し、時間後にロックが他のスレッドによって占有されていない場合、再びロックが得られ、waitメソッドが終了し、後続のコードが実行され、ロックが他のスレッドによって占有されている場合、他のスレッドがロックを解放するのを待つ.タイムアウト時間を設定したwaitメソッドは、タイムアウト時間が過ぎると、他のスレッドがnotifyを実行しなくても自動的にブロックを解除できますが、タイムアウト時間を設定していないwaitメソッドは、他のスレッドがnotifyを実行するのを待つ必要があります.