MQLによる非同期・マルチスレッドプログラミング - ページ 3

 
Vict:

お互いに理解しあえないもの

しかし、気にしないでください - µlの内部でCriAtTrade()を介してスレッドを作成することはありません、あなたは(スレッドが開始される)関数へのポインタを渡す必要がありますが、上記のように - kukush。

自分で適切な数のスレッドを作成するDLLを作成する。

複雑な計算をしたい場合は、純粋なWinAPIコールでは不十分です。

確かにWinAPI呼び出しのプロトタイプは社内でたくさん作っていますが、そのすべてがMQLからきれいに呼び出せるということではありません。

 
Igor Makanu:

誰も何も移植していない、エンドゥンネルに表示されているのは単なる関数シグネチャだ

を使用してスレッドを作成するには、関数の本体が必要です - これがスレッドで実行される本体です!

Windowsでスレッドを登録するには、構造体を記入する必要があります。

lpStartAddressを 参照- これはスレッドで実行される関数のエントリポイントアドレスで、メモリの割り当てについては 心配しないでください。

この問題を解決するには、MyFunc()のアドレスを取得する機会を見つける必要があります - メモリで、それは不在です - まあ、どこにもすべての...とんでもない


他にどう説明したらいいのかわからないのですが.というのは本質ではありません )))

ここでは、インルーダーの関数をパラメータ付きで移植していますが、何が違うのでしょうか?

HANDLE  CreateThread(PVOID thread_attributes, 
                     ulong stack_size, 
                     PVOID start_address, 
                     PVOID parameter, 
                     uint creation_flags, 
                     uint &thread_id);

そして、移植された関数のアドレスを取得すると、次のようになります。

PVOID  GetProcAddress(HANDLE module,
                      uchar &proc_name[]);
 

実際、関数の物理アドレスが利用できないため、MQLからCreateThreadを完全に呼び出すことはできません。

本物のハンドラを提供するDLLを自作する必要があります。

 
MetaQuotes Software Corp.:

実際、関数の物理アドレスが利用できないため、MQLからCreateThreadを完全に呼び出すことはできません。

本物のハンドラを提供するDLLを自作する必要があります。

ガッカリだ。CreateThread();とGetProcAddress(); を移植したそうです。
しかも関数の物理アドレスが取得できないとは、どういう仕掛けなのでしょうか))。
セキュリティは良いことですが、ご覧のように標準のWinAPIの利用が制限されます。
なぜ、これらの関数が移植され、標準のmqlライブラリに含まれるようになったのですか?
使用できない場合は、ユーザーを誤認させる))
そして、私が排除したかった非同期DLLを、標準のWinAPIを使って自分で書くことを勧めていますね
しかし、私は自分で非同期DLLを書くことに戻らなければならないようだ。

追伸
ここで、mqlの落とし穴は、googleにすべての時間を送信したい人のために、定義によって、この情報はありません。

 
Roman:

ガッカリだ。CreateThread();とGetProcAddress(); を移植したそうです。
そして、関数の物理アドレスは取得できません。どういう仕掛けなのでしょうか。))
セキュリティは良いことですが、ご覧のように標準のWinAPIの利用が制限されます。
なぜ、これらの関数が移植され、標準のmqlライブラリに含まれるようになったのですか?
使用できない場合は、ユーザーを誤認させる))
そして、私が排除したかった非同期DLLを、標準のWinAPIを使って自分で書くことを勧めていますね。
しかし、私は自分で非同期DLLを書くことに戻らなければならないようだ。

追伸
ここで、mqlの落とし穴は、googleにすべての時間を送信したい人のために、定義によって、この情報はありません。

WinAPi機能のプロトタイピングと 移植機能を混同しないようにしましょう。

WinAPIの標準的な機能のプロトタイプを提供することで、開発者が車輪の再発明を する必要がないように、意図的に素晴らしい仕事をしました。これらはライブラリではなく、説明文です。

生のWinAPI記述を持つことは、安全でない呼び出しの保証/機会を提供することを意味しません。

このレベルのアプリケーション言語では、セキュリティは最重要課題です。

 
うーん...。そして、もう一つの問題が発生する。
mqlから、ロードするDLLとエクスポートする関数を普通に初期化する方法は?

LoadLibraryW("MyDll.dll");
GetProccAddress(hMyDll, "MyFunc");
 
Roman:
うーん...そして、もう一つの問題が発生する。
mqlは通常、ロード可能なDLLとエクスポートされた関数をどのように初期化するのでしょうか?

あなたは読むことができますか? あなたは、検索エンジンを使用できますか? このリソース上のDLLの書き込みに関する20以上の記事があり、いくつかの記事は最初の手を書かれている - 管理者(開発者)によって、読んで、やって、すべてがフリーアクセスである、 - プログラム言語の知識がなくても、DLLの書き方についてこれ以上詳しい手順はありません、唯一のこのリソース上! - このリソースでは、DLLを作成するために使用することができます! - あなたは、DLLを作成するために使用することができますか?- 写真付きでも!?

何を目指しているのですか?- 洪水禁止?

ローマン

でも、また非同期DLLの作成に戻らないといけないんだろうなぁ。

ファンファーレの音は必要ですか?- 基本的なC + +に慣れている人、あるいはC#でより単純な - 一日の間にこの情報を見つけることができる、コードに書いてチェックし、ここであなただけの "欲求とお尻assiduousness "が必要 - ので、管理者の一人は、イモ、それが表現より正確に選ぶことは不可能である書いています。



SZS:管理者が1時間以内にユーザーに対してこれほど多くの返答を書いたケースは記憶にありませんが、何かが変わったのか、それとも星の配置がそうなのでしょうか?)))))

 
Igor Makanu:

あなたは読むことができますか? あなたは、検索エンジンを使用できますか? このリソース上のDLLの書き込みに関する20以上の記事があり、いくつかの記事は、最初の手を書かれている - 管理者(開発者)によって、読んで、やって、すべてがフリーアクセスである、 - プログラム言語の知識がなくても、DLLの書き方についてこれ以上詳しい説明はありません、唯一のこのリソース上! - あなたは、このリソース上のDLLの書き方についてもっと知りたいですか?- 写真付きでも!?

何を目指しているのですか?- 洪水禁止?

SZS:管理者が1時間以内にユーザーに対してこれだけ返信を書いたケースは記憶にないのですが、何か変わったのでしょうか?)))))

これらの記事には、DLLや関数の初期化に関する記述がありません !!!
Dllライブラリとエクスポート可能な関数の 初期化について記載されている箇所を教えてください、感謝しかありません。
フォーラムを参照する前に記事を読まない人がいると考える必要はありません

イゴール・マカヌ

ファンファーレは必要ですか?- 基本的なC++、あるいはもっと簡単なC#を知っている人なら、この情報をググって書き、コードでチェックすることができます。必要なのは「欲望と鈍感さ」だと、ある管理人は書いていますが、この表現はこれ以上ないくらい正確です。

邪魔なものは何もない!課題は、純粋なWinAPIを使うことでした。自作DLなし!
トピックは、mqlのマルチスレッドプログラミングの問題を議論するために作成された、あなたは、今日の否定的な態度のいくつかの種類を持って、どのような私が作成したトピックに殺到?
そのようなコメントはご遠慮ください。

 
Roman:
ふむ...すると、もう一つの問題が出てくる。
mqlから、ロードするDLLやエクスポートする関数を普通に初期化する方法は?

これらの関数をmqlに引き込む必要はありません。dllでそこにプロセスを作成します。

 
Dmitry Fedoseev:

これらの関数をmqlに引き込む必要はありません。そこにdllでプロセスを作成します。

あなたのDLLは、DLL_PROCESS_ATTACHで それを初期化:それは、mqlのプログラムから呼び出すのに十分でしょうか?
WinAPI関数で問題なく動作すると思いきや、閉じたDLLを追加で初期化する必要があり、
LoadLibraryW("MyDll.dll")を 使用。