タグ付けされた質問 「synchronization」

同期とは、コントロールを使用して、同じプログラムを実行するプロセスのグループ(プロセスの同期)またはデータの表現(データの同期)の一貫した表現を維持することを指します。

5
CancellationTokenプロパティの使用方法は?
前のクラスRulyCancelerのコードと比較して、を使用してコードを実行したいと思いました CancellationTokenSource。 キャンセルトークンで説明されているように、つまり例外をスロー/キャッチせずにそれを使用するにはどうすればよいですか?IsCancellationRequestedプロパティを使用できますか? 私はそれを次のように使用しようとしました: cancelToken.ThrowIfCancellationRequested(); そして try { new Thread(() => Work(cancelSource.Token)).Start(); } catch (OperationCanceledException) { Console.WriteLine("Canceled!"); } しかし、これによりcancelToken.ThrowIfCancellationRequested();メソッドで実行時エラーが発生しましたWork(CancellationToken cancelToken): System.OperationCanceledException was unhandled Message=The operation was canceled. Source=mscorlib StackTrace: at System.Threading.CancellationToken.ThrowIfCancellationRequested() at _7CancellationTokens.Token.Work(CancellationToken cancelToken) in C:\xxx\Token.cs:line 33 at _7CancellationTokens.Token.<>c__DisplayClass1.<Main>b__0() in C:\xxx\Token.cs:line 22 at System.Threading.ThreadHelper.ThreadStart_Context(Object state) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, …



5
時間を使わずにすべてのゴルーチンが完了するのを待つ方法スリープ?
このコードは、同じフォルダー内のすべてのxmlファイルを選択します。呼び出された実行可能ファイルがコールバックメソッドの各結果に非同期で処理を適用するためです(以下の例では、ファイルの名前だけが出力されます)。 メインメソッドが終了しないようにスリープメソッドを使用しないようにするにはどうすればよいですか?チャンネルに頭を巻き付けるのに問題があります(結果を同期するにはそれが必要だと思います)。 package main import ( "fmt" "io/ioutil" "path" "path/filepath" "os" "runtime" "time" ) func eachFile(extension string, callback func(file string)) { exeDir := filepath.Dir(os.Args[0]) files, _ := ioutil.ReadDir(exeDir) for _, f := range files { fileName := f.Name() if extension == path.Ext(fileName) { go callback(fileName) } } } func main() …

30
NDK解決結果:プロジェクト設定:Gradleモデルバージョン= 5.4.1、NDKバージョンが不明なエラー
Android StudioとGradleを3.5に更新した後、次のエラーが発生します。 NDK解決結果:プロジェクト設定:Gradleモデルバージョン= 5.4.1、NDKバージョンは不明です build-gradleのGradleバージョンを3.4.2に戻しましたが、役に立ちませんでした。

3
.classのJava同期ブロック
このJavaコードはどういう意味ですか?それはのすべてのオブジェクトをロックしますMyClassか? synchronized(MyClass.class) { //is all objects of MyClass are thread-safe now ?? } そして、上記のコードがこれとどのように異なるか: synchronized(this) { //is all objects of MyClass are thread-safe now ?? }

18
Node.jsの同期リクエスト
3つのHTTP APIを順番に呼び出す必要がある場合、次のコードのより良い代替案は何ですか? http.get({ host: 'www.example.com', path: '/api_1.php' }, function(res) { res.on('data', function(d) { http.get({ host: 'www.example.com', path: '/api_2.php' }, function(res) { res.on('data', function(d) { http.get({ host: 'www.example.com', path: '/api_3.php' }, function(res) { res.on('data', function(d) { }); }); } }); }); } }); }); }

6
Vagrantのシンボリックリンクと同期フォルダー
Vagrantを使用して、チームに共通の開発環境を提供したいと考えています。ホストは完全に異なります: 一部はOS X、一部はLinux、一部はWindowsを使用しています。 VMwareを使用するユーザーもいれば、VirtualBoxを使用するユーザーもいます。 VMの内部では、Linuxを実行します。 これまでのところ、すべてが順調です。 私たちの考えは、各開発者が選択したIDEを使用できるようにすることです。そのため、ホストとVMの間でソースコードを共有する同期フォルダーを導入しました。これは基本的には動作しますが、シンボリックリンクを除きます。 私たちのソースコードの内部には、いくつかのシンボリックリンクがありますが、これはVM内のLinux内の問題ではありませんが、Windows上のホストとしては、これが問題の原因になります。私たちができない唯一のことはシンボリックリンクを取り除くことなので、これに対処する別の方法が必要です。 これまで、いくつかのオプションを試してきました。 Vagrantの問題に記載されている回避策がありますが、残念ながらこれはVirtualBoxのみであり、VMwareを実行している人には役立ちません。これまでのところ、使用しているプロバイダーに応じて、Vagrantfileでコードを実行する方法は見つかりませんでした。 標準の共有フォルダーを使用する代わりに、rsyncタイプを使用してみました。これはWindowsでは機能しますが、OS Xでクラッシュしsymlink has no referentます(シンボリックリンクごとに1つのエラー)。 NFSについて考えましたが、これはWindowsをホストとして使用しない場合にのみ機能します。 SMBについても考えましたが、これもホストとしてのWindowsでのみ機能します。 共有フォルダー内でマルチプラットフォームホストとシンボリックリンクの問題が発生するのは、私たちがこの惑星で唯一または最初の人だとは思えません。 この問題をどのように解決すれば、シンボリックリンクを維持しながら、別のホストオペレーティングシステムを使用できますか?

5
リモートGitリポジトリと同期する方法は?
私はgithubでプロジェクトをフォークし、いくつかの変更を加えましたが、これまでのところ良好です。 それまでの間、私がフォークしたリポジトリが変更されたので、それらの変更を自分のリポジトリに取り込みたいと考えています。それ、どうやったら出来るの ?

5
2つのフォルダを自動的に同期させる方法は?
1つのフォルダとそのすべてのサブツリーの同期コピーが欲しいのですが。 このように自動的に機能するはずです。元のフォルダーからコンテンツを作成、変更、または削除するたびに、それらの変更が同期フォルダーに自動的に適用されるはずです。 このタスクへの最良のアプローチはどれですか? ところで:私はUbuntu12.04を使用しています 最終的な目標は、シンボリックリンクやマウントを使用せずに、個別のリアルタイムバックアップコピーを作成することです。Ubuntu Oneを使用してコンピューター間でデータを同期しましたが、しばらくすると問題が発生し、同期中にすべてのデータが失われました。 そこで、データのバックアップコピーを保持するために、さらにステップを追加することを考えました。 データは「フォルダA」に保存しています 「フォルダA」から「フォルダB」への一方向の同期を作成するには、現在の質問に対する回答が必要です(?をcron含むスクリプトはrsync可能性がありますか?)。AからBへの一方向のみである必要があります。Bへの変更をAに適用してはなりません。 私は単に「フォルダーB」を UbuntuOneと同期し続けます。このようにして、Aの変更はすべてBにアップルされ、U1から検出され、クラウドに同期されます。何か問題が発生し、U1がBのデータを削除した場合、私は常にAのデータを保持しています。 lanzzのコメントに触発されて、別のアイデアは、起動時にrsyncを実行してUbuntu Oneの下のフォルダーのコンテンツをバックアップし、rsyncが完了した後にのみUbuntuOneを起動することです。 あれについてどう思う?rsyncがいつ終了するかを知る方法は?

8
ArrayListをスレッドセーフにするにはどうすればよいですか?Javaの問題に対する別のアプローチ?
実行が終了したらすぐにThreadクラスを拡張するRaceCarオブジェクトを保持するために使用するArrayListがあります。Raceと呼ばれるクラスは、RaceCarオブジェクトが実行の終了時に呼び出すコールバックメソッドを使用して、このArrayListを処理します。コールバックメソッドaddFinisher(RaceCar finisher)は、RaceCarオブジェクトをArrayListに追加します。これは、スレッドが実行を終了する順序を与えることになっています。 ArrayListは同期されていないため、スレッドセーフではありません。新しいArrayListを渡し、返されたコレクションをArrayListに割り当てることで、Collections.synchronizedCollection(c Collection)メソッドを使用してみました。ただし、これによりコンパイラエラーが発生します。 Race.java:41: incompatible types found : java.util.Collection required: java.util.ArrayList finishingOrder = Collections.synchronizedCollection(new ArrayList(numberOfRaceCars)); 関連するコードは次のとおりです。 public class Race implements RaceListener { private Thread[] racers; private ArrayList finishingOrder; //Make an ArrayList to hold RaceCar objects to determine winners finishingOrder = Collections.synchronizedCollection(new ArrayList(numberOfRaceCars)); //Fill array with RaceCar objects for(int i=0; …

16
flag = trueになるまで待つ
私はこのようなJavaScript関数を持っています: function myFunction(number) { var x=number; ... ... more initializations //here need to wait until flag==true while(flag==false) {} ... ... do something } 問題は、JavaScriptがしばらくの間スタックし、プログラムがスタックすることです。だから私の質問は、「ビジー待機」なしでフラグが真になるまで関数の途中でどのように待つことができるのですか?

1
ループは、printステートメントのない他のスレッドによって変更された値を認識しません
私のコードには、別のスレッドから状態が変更されるのを待つループがあります。他のスレッドは機能しますが、私のループは変更された値を認識しません。永遠に待ちます。しかし、System.out.printlnステートメントをループに入れると、突然動作します!どうして? 以下は私のコードの例です: class MyHouse { boolean pizzaArrived = false; void eatPizza() { while (pizzaArrived == false) { //System.out.println("waiting"); } System.out.println("That was delicious!"); } void deliverPizza() { pizzaArrived = true; } } whileループの実行中にdeliverPizza()、別のスレッドから呼び出してpizzaArrived変数を設定します。しかし、ループは、System.out.println("waiting");ステートメントのコメントを外したときにのみ機能します。どうしたの?

7
Java同期ブロックとCollections.synchronizedMap
次のコードは、の呼び出しを正しく同期するように設定されていsynchronizedMapますか? public class MyClass { private static Map<String, List<String>> synchronizedMap = Collections.synchronizedMap(new HashMap<String, List<String>>()); public void doWork(String key) { List<String> values = null; while ((values = synchronizedMap.remove(key)) != null) { //do something with values } } public static void addToMap(String key, String value) { synchronized (synchronizedMap) { if (synchronizedMap.containsKey(key)) { …

7
Javaでブロックされないように、オブジェクトがロック(同期)されているかどうかをどのように判断しますか?
レコードのセット(recordA、recordBなど)を含むテーブルをメモリ内に含むプロセスAがあります。 現在、このプロセスはレコードに影響を与える多くのスレッドを起動でき、同じレコードにアクセスしようとする2つのスレッドが存在する場合があります。この状況は拒否する必要があります。具体的には、レコードが一方のスレッドによってロックされている場合、もう一方のスレッドを中止します(ブロックまたは待機したくない)。 現在、私は次のようなことをしています。 synchronized(record) { performOperation(record); } しかし、これは私に問題を引き起こしています... Process1が操作を実行している間、Process2が入ってくると、同期されたステートメントをブロック/待機し、Process1が終了すると操作を実行します。代わりに私はこのようなものが欲しいです: if (record is locked) return; synchronized(record) { performOperation(record); } これをどのように達成できるかについての手がかりはありますか?どんな助けでも大歓迎です。ありがとう、

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.