パスワードを忘れた? アカウント作成
13630796 journal
日記

mishimaの日記: 俺はもうべからず集を作らないといけないのかも知れない 35

日記 by mishima

「(OS起動直後はいろんなサービスが準備中だったりするから)OS起動後5分待ってから処理するようにしてね」
と要件に書いて委託したソースコードがこんな処理になって帰ってきた:

                                TimeSpan ReleaseTime = new TimeSpan(0, 5, 0);
                                DateTime DelayTime = DateTime.Now + ReleaseTime;
                                while (DelayTime > DateTime.Now)
                                { }

コメントには堂々と「指定した時間待機させるにはこれしかない」と書いてあるわけですよ。
ぐぬぬ。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • この人の思考回路が,万事が万事この調子だとしたらちょっと持てあますなあ。
    あまりお近づきになりたくないタイプ。
    • 近づかないようにできるならそれに越したことはないですね。
      ただまぁ、少なくとも弊社が委託先に使っている会社(国内)には一名おりましたよ、と。
      (これが最後の一人とは思えない、第二第三の…)

      --
      # mishimaは本田透先生を熱烈に応援しています
      親コメント
    • by Anonymous Coward

      言語ではなくOSの機能にスリープがあるということを知らないとこうなるし、思い込んでしまうと調べないのもよくわかるな
      スラド民の大半がこうだよ?

      • > スラド民の大半がこうだよ?
        へぇ、根拠は?

        親コメント
        • by Anonymous Coward

          > コメントには堂々と「指定した時間待機させるにはこれしかない」と書いてあるわけですよ。

          しかない、ということはスマートな解決ではないことは自覚しているようですし、

          > 本件のコメントには「タスクスケジューラが持っている遅延実行はランダム遅延だからダメ」
          > とか書いてあってですね…なぜダメだと思ったのか。

          とまあ、やっぱり思い込みの問題だと思うのですよ
          しかしここについたコメントは彼の知識不足を取り上げるものばかりで、これもやはりスラド民の思い込みのなせる業だなと

  • by manmos (29892) on 2018年06月25日 17時06分 (#3431824) 日記

    sleepはOSによってはsignalがらみで変な行動になりかねないから…

    • by Anonymous Coward

      C#ってその程度のことも抽象化できてないの?

  • by Anonymous Coward on 2018年06月25日 10時11分 (#3431507)

    { } の中にsleepがないんでしょうねえ...せめて

    # 処理系によっては、適度にポーリングしないと、はあるので、ソースの大枠はわるくはないと思うけど

    ## というか起動時の待ちとして、これがいいかは日記からだとわからんけどね...

    • by Ryo.F (3896) on 2018年06月25日 10時16分 (#3431511) 日記

      sleepを知っていれば、五分間sleepするんじゃ…
      いや、ヤツらは我々の想定の斜め上を行ってるかも。

      親コメント
      • by mishima (737) on 2018年06月25日 13時11分 (#3431595) ホームページ 日記

        別の部分で Thread.Sleep() 使ってる形跡はあるので、
        知らないわけではないようです。
        なぜ Sleep() を使わなかったのかは謎(busy waitという概念を知らない?)。

        --
        # mishimaは本田透先生を熱烈に応援しています
        親コメント
    • by mishima (737) on 2018年06月25日 13時05分 (#3431591) ホームページ 日記

      これは Windows の起動時にさせたいバッチ処理(特定のファイルをサーバにアップロードする)の一部です。
      目的からしてもこんな書き方は不要だし、常識的に言っても busy wait をさせるには 5 分間は長すぎると思うのです。

      --
      # mishimaは本田透先生を熱烈に応援しています
      親コメント
    • by Anonymous Coward

      DelayTimeとReleaseTimeの変数名は逆にしたほうがいい

      • by Anonymous Coward

        誤記による代入を防ぐために (42 == value) なルールの可能性が…ないか。

        • by Anonymous Coward

          C#でC/C++みたいな誤記による代入って起きうるの?

  • by Anonymous Coward on 2018年06月25日 11時07分 (#3431544)

    特定のサービスが起動してるか確認してから処理を開始する、というサンプルでも見て作ったのかな?

  • by Anonymous Coward on 2018年06月25日 12時23分 (#3431572)

    タスクで起動するなら遅延時間を指定しておけばいいし、
    サービスならそのものズバリ、他のサービスの開始を待ってから開始する「自動(遅延開始)」設定があるのに…

    自前で時間を待機しようとするな。特に時間を待機するためだけにサービスで実装するな。と10年以上前からMSは仰せです。

  • sleepを使ったことによって、怒られた経験でもあったんじゃない?
    具体的に指示しちゃいけない契約形態の委託先ならしかたがない。

    5分待つってのも、あまり合理性のある話しとは思えない。
    必要なサービスに依存関係をかけたモニタサービスから、カーネルmutex経由で、起動可能なタイミングを教えたり、
    起動した依存するサービスのプロセスをチェックして適切なタイミングをはかったり出来るんじゃないかな。

    • 「なんでSleepを使ったら怒られたのか」の理由を理解していればよかったんでしょうけどね。

      OS起動後5分後に、というのは実装を複雑にしないためです。
      (弊社はお金がないので)

      --
      # mishimaは本田透先生を熱烈に応援しています
      親コメント
    • by Anonymous Coward
      私も同感です。
      OS起動後、5分という時間を待って実行というのは不確実性高いのでは。

      # 時間に頼った実装は環境の変化に弱い
      # それと、間違って面白おかしいのモデを付けてしまいました。。。
  • by Anonymous Coward on 2018年08月04日 22時52分 (#3455527)

    スラド民なら分かってもらえると思ってたmishimaさんがため息している気がする

typodupeerror

アレゲはアレゲ以上のなにものでもなさげ -- アレゲ研究家

読み込み中...