問題タブ [hacklang]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - マルチスレッド (非同期) とハック (HHVM) を使用して PHP 配列を「歩く」
「ハック」タグがまだない理由はわかりませんが(PHPでリストするのは申し訳ありません)、しかし...
ハックのマルチスレッド/非同期機能を使用して、複数のスレッドを使用して配列を歩くことができるかどうか/どのようにできるか疑問に思っています。私はこれを本当に必要としませんが、それは好奇心であり、役に立つかもしれません.
「ハック」の非同期機能のドキュメントを見てきました
http://docs.hhvm.com/manual/en/hack.async.php
そしてちょっと難しい。
これが私が作りたい(または完成させたい)ものの基本的な考え方です:
a) 配列を x セクションに分割し、x "スレッド" で処理するか、b) x スレッドを作成し、それぞれが最新の利用可能な項目を処理します。スレッドがアイテムを処理するとき、親スレッドに新しいアイテムを処理するように要求します。ハックは「スレッド」を行いませんが、同じことを非同期関数で表します
基本的に、最終的な目標は、標準の foreach ブロックを複数のスレッドで実行するようにすばやく最適化することです。そのため、コードの変更は最小限で済みます。また、ハックができることとその動作を確認することもできます。
サンプルとしていくつかのコードを思いつきましたが、完全に間違っていると思います。
asynchronous - hacklang の非同期サーバー
hacklang で非同期サーバーを作成しようとしています。ファイル名は first.php です。
しかし、これはうまくいきません。このコードの hh_client は次のように述べています。
first.php:16:3,29: この式は Awaitable 型ですが、破棄されるか、待機される前に危険な方法で使用されます (Typing[4015])
first.php:20:39,47: これが Awaitable だと思う理由です
しかし、handleClient をブロックして待ちたくありません。
次に、次のようにコードを実行します: hhvm -d hhvm.hack.lang.auto_typecheck=0 first.php
サーバーが起動します。しかし、ブラウザサーバーからサーバーhttp://192.168.0.97:8080/にリクエストを送信し始めると、非常に長い間いくつかのリクエストがブロックされ、新しい接続が受け入れられなくなります。
私は何か間違ったことをしていますか?このようなサーバーをhacklangで作成することはまったく可能ですか?
hacklang - キャッチ可能な致命的なエラー: ハック タイプのエラー
31ページのプレゼンテーションの例
エラー
キャッチ可能な致命的なエラー: ハック タイプのエラー: example.php 行 6 での入力エラー
何が問題ですか?
ヒップホップ VM 3.11.1 (rel)
コンパイラ: tags/HHVM-3.11.1-0-g64d37362bc0b6aee919492ad61cf65ce0a5d5e92
リポジトリスキーマ: 8b80ba45250a6669cd610c189dbbb55b6218c2a3
hacklang - 自己/子の静的構造 (hacklang)
Hacklang には無理な設計だと思いませんか?
クラス名 'Foo' では new を使用できません。__construct 引数は、子クラスでの一貫性が保証されていません (Typing[4060])
hacklang - 予期しない T_OBJECT_OPERATOR が TypeChecker エラーなし (Hacklang)
どちらもタイプチェッカーには問題ありませんが、2 番目は致命的なエラーを引き起こします
致命的なエラー: 構文エラー、予期しない T_OBJECT_OPERATOR、')' が必要です