pthread_create 関数を windows でも使えるようにする

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
helloworld1853
記事: 181
登録日時: 13年前

pthread_create 関数を windows でも使えるようにする

#1

投稿記事 by helloworld1853 » 13年前

あるUnix用ソースコードを
VC++ でコンパイルできるようにしているのですが、
pthread_create で躓いています。
以下にソースコードの一部をのせました。
pthread_create は CreateThread に対応しているみたいですが、
引数がまったく違って困っています。
何かアドバイスや解決方法があれば
お願いします。

コード:

int main(void)
{
 int server_sock = -1;
 u_short port = 0;
 int client_sock = -1;
 struct sockaddr_in client_name;
 int client_name_len = sizeof(client_name);
 HANDLE newthread;

 server_sock = startup(&port);
 printf("httpd running on port %d\n", port);

 while (1)
 {
  client_sock = accept(server_sock,
                       (struct sockaddr *)&client_name,
                       &client_name_len);
  if (client_sock == -1)
   error_die("accept");
 /* accept_request(client_sock); */
 if (pthread_create(&newthread , NULL, accept_request, client_sock) != 0)
   perror("pthread_create");
 }

 closesocket(server_sock);

 return(0);
}

たかぎ
記事: 328
登録日時: 14年前
住所: 大阪
連絡を取る:

Re: pthread_create 関数を windows でも使えるようにする

#2

投稿記事 by たかぎ » 13年前

pthreadはMinGWにも移植されているので、そのソースを参考にしては?
いっそのことMinGWを使うというのも一つの手です。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: pthread_create 関数を windows でも使えるようにする

#3

投稿記事 by softya(ソフト屋) » 13年前

前回の質問が未解決ですのでお願いします。
「きれいなソースコードの書き方 • C言語交流フォーラム ~ mixC++ ~」
http://dixq.net/forum/viewtopic.php?f=3&t=11189#p92586

それと、CreateThreadが使えるならpthread_createは何ら難しい部分はないはずです。
「Man page of PTHREAD_CREATE」
http://linuxjm.sourceforge.jp/html/glib ... ate.3.html

CreateThreadに関してはC言語の標準ライブラリを使う場合は代わりに_beginthreadexを使ってください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

helloworld1853
記事: 181
登録日時: 13年前

Re: pthread_create 関数を windows でも使えるようにする

#4

投稿記事 by helloworld1853 » 13年前

ありがとうございます。
これですべてのソースコードを
windows用へ変換できました。

>前回の質問が未解決ですのでお願いします。
ご心配してくださってありがとうございます。
寄り道してしまいました。

コード:

CreateThread(0, 0, (LPTHREAD_START_ROUTINE)accept_request, (LPVOID)client_sock, 0, (LPDWORD)&newthread
たかぎさん、softyaさん
ありがとうございます。

たかぎ
記事: 328
登録日時: 14年前
住所: 大阪
連絡を取る:

Re: pthread_create 関数を windows でも使えるようにする

#5

投稿記事 by たかぎ » 13年前

softyaさんも書かれていますが、CreateThreadではなく_beginthreadまたは_beginthreadexを使ってください。
元がUnixをターゲットにしているソースであれば、標準ライブラリを排除することはまず無理でしょう。

閉鎖

“C言語何でも質問掲示板” へ戻る