HP10.20でのスレッド作成方法について

このQ&Aのポイント
  • HP10.20でのスレッド作成方法について悩んでいます。現在UNIXを学び始めて半年ほどで、まだ初心者です。
  • 不明な点を調査するためにGoogleで検索してみましたが、情報を見つけるのが難しいです。英語が苦手なため、翻訳ツールを使用しても十分な理解ができません。
  • HP10.20の環境でスレッドを作成するためのコーディングの例を教えていただけると助かります。
回答を見る
  • ベストアンサー

HP10.20でのスレッドの作成の仕方

ええと結構悩んでます。UNIX触り始めてまだ半年なんで かなり見当違いな事を書いてるかもしれませんが、笑って流してくださると 嬉しいです。 以下質問です↓ スレッドを作成する(C++)時って確か、pthread_create()だと思ったんですが HP10.20では上手くコンパイルが通りません。 聞いた話によると、HP10.20では仕様が決定される前だったので 少し違うというような話を聞きました。 googleとかで調べてみたのですが、どこを探していいかよく分かりません。 ちなみに英語は中学生レベルなんで、海外のページは頭の悪い 翻訳で読んでいるんで、意味が良く伝わらなくて困ってます。 ああ、話がそれてきた・・・・ とりあえず、HP10.20でスレッドを作成するコーディングの例なんかを 教えていただけると嬉しいです。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

参考URLによると http://www.faqs.org/faqs/hp/hpux-faq/section-195.html HP-UXではDCEというパッケージを入れると、DCEスレッドというのが使えるようになるとのことです。HP-UX 11ではpthreadが入っているようですが。 これは、次のURLからの一連のメーリングリストログを見ると、有償らしいです。man thr_intro などをしてみて、入っているかどうか試してみてください。 http://www.media.osaka-cu.ac.jp/pipermail/pthread/1999-November/000248.html また、そのログによると、PTL(無料のスレッドライブラリ)が動く可能性もあるということなので、こちらも調べてみてください。 http://www.media.osaka-cu.ac.jp/~k-abe/PTL/index-ja.html

参考URL:
http://www.faqs.org/faqs/hp/hpux-faq/section-195.html

関連するQ&A

  • pthread_attr_tへの値の代入について

    スレッドを作成する際に、 属性としてPTHREAD_CREATE_DETACHEDを指定したいのですが、 その際pthread_attr_tをどのように設定したらよいかわかりません。 現在書いているコードは pthread pt; pthread_attr_t* attr; pthread_attr_init(attr); pthread_attr_setdetachstate(attr,PTHREAD_CREATE_DETACHED); if (pthread_create(&pt,attr,NULL,NULL) != 0){ perror("thread_create()"); exit(1); } 上記のようなものです。(スレッド作成部分のattr以外の 引数は適当です) これでコンパイルすると 警告: 変数 attr には値が代入されていません. と、警告が出てしまいます。 これを解消するにはどう修正したらよいのでしょうか?

  • Windowsのスレッドの名称

    Windowsで作成されるスレッドの呼称が正式になんと呼ばれているのか判らず困っています。 僕はこれまで「Win32 API Thread」と呼んでいましたが、先輩は「Win32 Thread」と呼んでいました。さらに知人には「Windows Thread」や「Windows Native Thread」と呼ぶ人もいます。googleで検索したところ、件数に差異はあってもどの呼称も使用している人は少なからずいるようです。 例えばpthreadのように、設計書のような正式なドキュメントに記載するときはどの呼称が正しいのでしょうか?それとも別の正式呼称があるのでしょうか?

  • スレッドとメッセージキューに関して

    現在、下記のようなプログラムを作成しています。 内容は、メッセージキューを受信するスレッドを生成するというイメージです。 処理内容は下記のようになります。  (1)メッセージキューの生成  (2)スレッド生成(メッセージキュー受信側)  (3)スレッド停止  (4)メッセージキューの削除 しかし、(3)のスレッド停止を実施しても、(4)のメッセージキューの削除以降にて、msgrcvのエラーが出力されてしまいます。 スレッド停止を行ったことから、TestThreadは動作しなくなり、(4)のメッセージキューの削除にて、エラーともならずに終了することを望んでりますが、上手くいきません。 下記に作成しているプログラムを記載いたします。 正常終了をするには何がいけないのでしょうか? ご教授宜しくお願い致します。 [test.cc] ---------------------------------------------------------------- #include <time.h> #include <stdio.h> #include <string.h> #include <errno.h> #include <fcntl.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <ctype.h> #include <stdlib.h> #include <pthread.h> #include <stdlib.h> #include <sys/ipc.h> #include <sys/msg.h> // メソッドポインタ定義 typedef void (*testT); // スレッドID pthread_t threadId; // メッセージキュー識別子 int msqId; // 送受信するメッセージ struct msgbuf{ long int type; char data[BUFSIZ]; }; // テストスレッド void TestThread() { // メッセージ struct msgbuf message; while( 1 ) { printf("### TEST ###\n"); printf("msq start\n"); // 受信 if( msgrcv( msqId, &message, BUFSIZ, 0, 0 ) == -1) { printf("ERR! msgrcv errno[%d]\n", errno); continue; } printf("msq ed\n"); sleep(1); } return; } // メイン int main(int argc, char *argv[]) { // メッセージキュー識別子退避変数 int testMsqid; // スレッド操作リターン値 int status; // スレッドa用のパラメータ pthread_t thread_test; printf("### TEST START ###\n"); // メッセージキューの作成 if( (testMsqid = msgget((key_t)1111, 0666 | IPC_CREAT)) == -1 ) { printf("ERR! CREATE bkMsqId[%d]\n", testMsqid); return 1; } // メッセージキュー識別子を共通変数に設定 msqId = testMsqid; printf("msgget OK\n"); sleep(5); // スレッドを生成 status = pthread_create(&thread_test, NULL, (void*(*)(void*))TestThread, (void*)NULL); if(status!=0) { printf("pthread_create ng\n"); return 1; } printf("pthread_create OK\n"); sleep(5); // スレッド停止 status = pthread_cancel(thread_test); // スレッド停止結果 if ( status != 0 ) { printf("pthread_cancel ng\n"); return 1; } printf("pthread_cancel OK\n"); sleep(5); // メッセージキューの削除 if ( msgctl( msqId, IPC_RMID, NULL) == -1 ) { printf("msqId[%d] errno[%d]\n", msqId, errno); return 1; } printf("msgctl OK\n"); sleep(5); printf("### TEST E N D ###\n"); return 0; } ----------------------------------------------------------------

  • クラス内でのpthread_createに関して

    C言語初心者です。 下記のようなソースにて、クラス内でのスレッドを行うことが目的です。 しかし、下記のpthread_createにてコンパイルエラーとなります。 キャストエラーのようなのですが、キャスト方法がわかりません。 初歩的な質問で、大変申し訳御座いませんが、ご教授頂けませんでしょうか? ################################################################ #include <stdio.h> #include <pthread.h> // Testクラス class Test{ private: // スレッド処理 void testThread() { printf("### THREAD START ###\n"); return; } public: // スレッド開始 void threadStart() { // スレッド生成戻り値 int status; // スレッド pthread_t thread; // スレッド生成 status = pthread_create( &thread, NULL, (void*(*)(void*))testThread, NULL ); // スレッド生成結果 if ( status != 0 ) { printf("ERR!! pthread_create NG\n"); } return; } }; // メイン実行 int main(int argc, char *argv[]) { // Testクラスオブジェクト Test test; printf("### TEST START ###\n"); test.threadStart(); printf("### TEST E N D ###\n"); return 0; } ################################################################ 宜しくお願い致します。 以上です。

  • [VC++] AfxBeginThreadで生成したスレッドの監視方法について

    お世話になります。 VC++でスレッドプログラムを作っています。 AfxBeginThreadでワーカースレッドを作成し、その中でダイアログを表示する プログラムです。 問題は、ワーカースレッドがある処理状態に至ったことを メインスレッドで検知したいのですが、それがうまく いかないということです。 コードの概略をしめします。 <メインスレッド側> void CTestApp::OnTest() {   CTestDlg dlg;   dlg.IsContinue = FALSE;   pThread = AfxBeginThread(TestDlg::Thread, (void*)&dlg);   while (!dlg.IsContinue) { // <----問題:このループ処理を抜けれない!    Sleep(0);   } } <ワーカースレッド側> UINT TestDlg::Thread(LPVOID pParam){   TestDlg* pDlg = (TestDlg*)pParam;   pDlg->Create(TestDlg::IDD);   pDlg->ShowWindow(SW_SHOW);     pDlg->IsContinue = TRUE; //<--ここでフラグを変更しているのに。   while(pDlg->IsContinue) {    MSG msg;    if (::PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) {      ::TranslateMessage(&msg);      ::DispatchMessage(&msg);    }   }   pDlg->DestroyWindow();   return 0; } ---- メインスレッドのSleep(0)で待つのを AfxGetApp()->PumpMessage()に変更すると ループを抜けるようなのですが、どうも納得できません。 上記のプログラムで問題、もしくはプロジェクトの 設定等に不備がある可能性がありましたら 御教授いただけたら幸いです。 よろしくおねがいいたします。

  • 海外向けHPをつくるのですが・・・

     この3か月ほど前から準備を始めました。マレーシア・シンガポール・インドネシア・ベトナムと韓国向けに 他分野の専門家と消費者による「事業アイデアの集合知サイト」を開設したいのですが。モバイル対応を核としたサイトです。以下の要件で作りたいと思います。作業は自分でしていきますが、ご教授いただければ幸甚です。共同作業のできるサイトへと拡張する計画です。 (1)OSは、Unix系。(2)html5/css/jQUERY Mobile。(3)Rで形態素分析・統計分析。(4)サービスプログラムは、Pythonとjava scriptで創ります。 HPの文書部分は、いろいろなサイトをメモで取って、直して使おうと考えています。因みに、R以外は全く触れたこともありません。   Unix系は、ロードしましたが、html5以降(Rを除く)はロードしていません。html5はブラウザーがコンパイルするのか?見当たりません。非常に見当違いをしているようですが・・・  なお、HPサーバーは無料のWIX他3社ほどから同時にドメインを取ってやろうと思っています。  どの辺から勘違いしているでしょうか?  多言語HPであることも付け加えなければなりません。 どんなにけなしていただいても結構です。この際、ストレス発散の咬ませ犬にしてください。 ただ、建設的な意見ならの話しです・・・が  変な話ですが、オープンソースなHPであり、対局する意見をぶつけ合う場を作れればよいと考えます。 

  • HP作成。初心者困っています

    いつもお世話になっております。 昨日突然に、会社のHPを作成するよう指示されました 『しかも無料で、急いで』ということです いままで自分のブログなどはありましたが会社のHPとなると・・・ 1・とりあえずは会社案内のようなものでよい 2・とりあえずは無料でできる 3・他ブログ(販売あり)をリンクさせることができる いままで何度かHPの話が出ていましたが 商品を販売するなどの業務がメインではないために放置されていました 現在使用しているプロバイダはocnです。 いろいろ検討してみましたが・・・ (1)ocn無料HP_PageON (2)Google無料HP_みんビズ(現在1年無料キャンペーン) どうでしょうか? ご教示お願い申し上げます 宜しくお願いいたします

  • Javaプログラムの実行時エラー

     Javaの学習をしている初心者です 今までメモ帳でコーディングしてコマンドプロンプトでコンパイル・実行していましたが、本日も同様のことをしていたところ、実行を要求するとException in thread "main" java.lang.NoClassDefFoundError: なるエラーが出ました。 このエラーはコーディング時のクラス名とファイル登録時のクラス名が異なる場合に出ていたような気がします。 今回は今まで作成したプログラム全部で、実行するとこのエラーが出ます。新しく作成したものもだめです。…コンパイルは うまくいきますが、実行するとこのエラーが出ます。  どうしたらよいかどなたかお教えください。

  • HPを作成中ですが、IEで「タガログ語のページです。googleツール

    HPを作成中ですが、IEで「タガログ語のページです。googleツールバーを使用して翻訳しますか?」と表示されてしまうページがあります。 (ファイヤーフォックス、グーグルクロームではそのような表示は出ません。) 使用ソフトはDW CS4で、sprayを挿入したページにそのような表示が出ます。 同じsprayを挿入して作成した別のサイトのページではそのような表示は出ません。 レンタルサーバーの違いでしょうか??? 記述のどこがタガログ語になってしまっているのかまったくわかりません。 どうかご教授宜しくお願い致します。

    • ベストアンサー
    • HTML
  • pthread_createでタスクの構造体にて

    pthread_createという関数でeventというスレッドタスクを作成したく、次のように宣言しました。 if(pthread_create(&thread03 , NULL , thread_func03 ,(void*)&pth) !=0) perror("pthread_create()"); ちなみに、pth_argは次のような構造です。 typedef struct{ char *c; int i; long l; }pth_arg; /* thread_func関数に値を渡すときの構造体 */ 実際のタスク void *event(void *param) { pth_arg *this_arg; this_arg = param; -----(中略)------------------------- } このような形ビルドも正常に完了し、this_argの構造をそのままこのタスク内で使用することも可能なのですが、その後に typedef struct{ char *c; int i; long l; }env_t; /* 次のような構造体もこのタスク内に追加したくなり、 実際のタスク env_t * pEnv; //グローバル宣言 void *event(void *param) { pth_arg *this_arg; this_arg = param; pEnv->i = 0x01; -----(中略)------------------------- } このように、env_t * pEnv;でグローバル宣言で宣言して 値を代入するようなコードを書くと、ビルドはOKなのですが、実行すると Segmentation fault (core dumped) このエラーが出てきて動作が停止してしまいます。 これを解決方法などありませんでしょうか? どうぞ、ご教示頂きますようお願い致します。