ここから本文です

【Win10 C++ NTP】複数PCにおけるプログラムの同時実行 2台の同じ仕様のPCを使っ...

pw_mgs_snakeさん

2017/12/1418:10:08

【Win10 C++ NTP】複数PCにおけるプログラムの同時実行
2台の同じ仕様のPCを使って、それぞれのPCのプログラムを同時に実行しようと考えています。

現在、NTPローカルサーバを使って2台のPCの時計を同期させ、タスクスケジューラでプログラムを同時に実行するという形をとっています。

しかし、いざプログラムを実行すると、30~100ms程実行開始時間にズレが出てしまいます。
これはNTPローカルサーバとの時計の同期ズレが原因ではないかと考えています。
理想としては同期ズレは10ms以内にしたいのですが、どうもうまくいきません。

別々のPCでのプログラムの同時実行について他にご意見やアドバイスがありましたらご教授願います。

この質問は、活躍中のチエリアン・専門家に回答をリクエストしました。

閲覧数:
48
回答数:
4
お礼:
50枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

quickbrwnfoxjumpsoverthelazydogさん

リクエストマッチ

2017/12/1509:44:39

そもそもWindowsのタスク管理から考えると10mSなんていう精度での制御は無理なんじゃないかと思いますが。そもそもが20mSでのタスク切り替えとかじゃありませんでしたっけ。

プログラムの中に同期機構を作り込めばマシになるとは思いますが。

質問した人からのコメント

2017/12/15 12:41:53

多くのご回答ありがとうございました。
自分の無知に恥を覚えております…

参考にさせていただきます。

ベストアンサー以外の回答

1〜3件/3件中

並び替え:回答日時の
新しい順
|古い順

kakaru_yossyさん

2017/12/1512:25:27

処理に同期した時刻のデータが必要という要件なら、時刻のデータを交信し合いながら相互に処理するよう設計された方が良いのではと思います。

プロフィール画像

カテゴリマスター

uso8megaさん

2017/12/1511:42:13

「Windowsで1000/64ミリ秒以下の精度とか馬鹿げてる。
ハードリアルタイムOS使えば」という個人的感想は
さておき。

>30~100ms程
そんなにズレて困っているのなら、2台を高速ネットで
繋いで片方から双方を[PowerShell/SSH等で]リモート
操作した方が、数ms程度のズレで済む可能性が大かと。

プロフィール画像

カテゴリマスター

2017/12/1422:43:56

とりあえず、NTP では 128 ミリ秒までの誤差を許容しているので、10 ミリ秒以内の時刻同期は難しいのでは……と思いますが。
何回もやっていたら、偶然同じタイミングで起動できる感じでしょうね。

2台の端末同士でタイミングを合わせて、せーの! でプログラムを起動するプログラムが必要そうです。

たとえば、ping の応答時間(ms) をみて、何回か実行時間想定でパケットのやり取りをし、微調整を行って本番起動!
……というようなイメージですが、ネットワークプログラミングはしたことないのでイメージだけです。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。