1

マルチスレッドソケットリスナー(デーモン)を開発しています。

pthreadライブラリを使用してマルチスレッドを正常に実装しました。

デバイスがデーモンに接続すると、デバイスは識別番号を送信します。私の質問は次のとおりです。

スレッドごとにその識別番号を保存する方法。そのため、そのデバイスからデータを受け取ったときに、そのIDを知ることができます。

delphiには、threadvar(すべてのスレッドに割り当てられる変数)と呼ばれるものがあります。それが不可能な場合、リストを格納するために使用できるライブラリはありますか?私はweelを再発明する予定はありません(例えば、私自身のリンクリストを作成します)

LinuxMintでGNUCCを使用しています

4

2 に答える 2

2

コードを書いてもらうと答えるのが簡単になりますが:

  • pthreadを使用してスレッドローカル変数が必要な場合は、スレッドで実行される関数のスタックに割り当てます(このスレッドローカル変数は、文字列のリストへのポインターになります)。
  • 単一および二重にリンクされたリストを持つGlibを​​使用して、文字列を格納できます。スレッドで実行される関数の最後にあるリストを必ず解放してください
  • ポインタを介してスレッド化される関数にデータを渡すことができvoid *ます(ただし、それを行う必要があるかどうかは不明です)
于 2012-06-18T08:25:42.503 に答える
1

変数を格納するためのスレッド固有のデータを探していると思います。次に、pthread_setspecific()とpthread_getspecific()を調べます。

于 2012-06-18T08:54:52.240 に答える