* Mon Nov 02 21:15:13 JST 2015 Naoyuki Sawa
- 「POSIX Threads for Win32」(http://www.sourceware.org/pthreads-win32/)を取り込みました。
  プレビルドバイナリも配布されているようですが、最小限にしたかったので、自分でビルドする事にしました。
- ビルド手順は、以下の通りです:
  ・ftp://sourceware.org/pub/pthreads-win32/pthreads-w32-2-9-1-release.tar.gz をダウンロードする。⇒/clip/keep/pthreads-w32-2-9-1-release.7z に保存しておきました。
  ・pthreads-w32-2-9-1-release.tar.gz を、/Home/Share/Piece/clip/tool/pthreads/ に展開する。
  ・/Home/Share/Piece/clip/tool/pthreads/ へ移動し、以下のコマンドを実行する。
  　│VCVARS32.BAT		…VC++6.0の環境変数設定
  　│nmake clean VC		…to build the MSVC dll with C cleanup code
  　│nmake clean VC-debug	…to build the debug MSVC dll with C cleanup code
  ・以下のファイルを残して、それ以外のファイルとフォルダを全て削除する。
  　│pthread.h			┐
  　│sched.h			├アプリケーションからインクルードするファイル。sched.hはpthread.hの中でインクルードされているのでアプリケーションから明示的にインクルードしてもしなくても構いません。
  　│semaphore.h			┘
  　│pthreadVC2.dll		┬リリース版DLLとインポートライブラリ
  　│pthreadVC2.lib		┘
  　│pthreadVC2d.dll		┬デバッグ版DLLとインポートライブラリ
  　│pthreadVC2d.lib		┘
  ・以下のファイルを、/Home/Share/Piece/clip/tool/ へ移動する。(/Home/Share/Piece/clip/tool/ にPATHが通っている前提です。もし通っていない場合は、別のPATHが通っているフォルダに移動して下さい。)
  　│pthreadVC2.dll
  　│pthreadVC2d.dll
  以上です。
- 本当は、DLLではなく、スタティックライブラリをビルドしたかったのですが、上手く行きませんでした。
  Pthreads-w32 release 2.x では、スタティックライブラリをビルドしようとすると、新しいVC++でしか使えないプラグマが使われているようで、コンパイルエラーになりました。
  古い Pthreads-w32 release 1.x で試して見たところ、ビルドは通るのですが、アプリケーションにリンクしようとするとfree()等の関数が標準ライブラリと衝突するエラーになりました。
  良く判らないので、Pthreads-w32をスタティックライブラリで使う事は諦めて、DLLで使う事にしました。
- 2015/11/02現時点では、/Home/Share/Piece/clip/test.win/ の雛形プロジエクトは「シングルスレッド」の設定のままです。												┬→* Tue Nov 03 21:42:14 JST 2015 Naoyuki Sawa											┬→* Wed Nov 04 21:43:51 JST 2015 Naoyuki Sawa
  「POSIX Threads for Win32」を使う場合、アプリケーションのプロジェクト設定を「マルチスレッド」又は「マルチスレッドDLL」にすべきだと思うのですが、少し試した限りでは「シングルスレッド」のままでも動きました。	│　- 雛形プロジエクトをマルチスレッドに変更しました。Boehm GCもマルチスレッドに変更しました。Pthreads-w32には変更有りません。	│　- 雛形プロジエクトでBoehm GCとPthreads-w32を併用した場合の最小限のラップ処理を行いました。
  今後より詳しく検証して、もし問題が生じた場合は、個別ののプロジェクトで「マルチスレッド」又は「マルチスレッドDLL」に変更して下さい。										│　  Boehm GCとPthreads-w32を併用して構いませんが、Pthreads-w32内でメモリ確保するとまだ正しく動作しません。			│　  Boehm GCとPthreads-w32を併用して、Pthreads-w32で生成したサブスレッド内でもメモリ確保が出来るようになりました。
  全てのプロジェクトで「POSIX Threads for Win32」を使うわけではないので、/Home/Share/Piece/clip/test.win/ を「マルチスレッド」又は「マルチスレッドDLL」に変更する事はおこなわない予定です。			┘　  詳細は、/Home/Share/Piece/clip/tool/gc/README.TXT の同日のコメントを参照して下さい。					┘　  詳細は、/Home/Share/Piece/clip/test.win/extclip.h,及び,app.cの'#if (defined(GC_H) && defined(PTHREAD_H))'のブロックを参照して下さい。
- Pthreadsの使い方については、下記のページが参考になります。
  ■参考資料
  │「GNU/Linuxでのスレッドプログラミング - NPTL (Native POSIX Thread Library) Programming.」(http://www.tsoftware.jp/nptl/)
  とても判り易く,かつ,かなり詳細なので、普通に使うだけならば多分このページから得られる情報だけで十分だと思います。

* Fri Sep 02 21:28:22 JST 2016 Naoyuki Sawa
- 64ビット版のライブラリをビルドしました。
  バージョンは変更しておらず、前回と同じ pthreads-w32-2-9-1-release.tar.gz です。(2016/09/02現時点でもこれが最新です。)
- 64ビット版のコンパイルに使用した、コンパイラのバージョンは、以下の通りです。
  │Microsoft Visual Studio Community 2015 Version 14.0.25425.01 Update 3
- ビルド手順は、以下の通りです:
  ・前回保存しておいた /clip/keep/pthreads-w32-2-9-1-release.7z を、/Home/Share/Piece/clip/tool/pthreads/ に展開する。
  ・/Home/Share/Piece/clip/tool/pthreads/ へ移動する。
  ・/Home/Share/Piece/clip/tool/pthreads/Makefile の、以下の箇所を変更する。
    ①11行目 ---
    │×変更前
    │DLL_VER = 2
    │〇変更後
    │DLL_VER = 2_x64									─dll名がx86版と衝突するのを防ぐために、x64版は'_x64'のサフィックスを付けて、pthreadVC2_x64.dllとする事にした。公式の命名ではありませんが、Webを検索したところ、この名前に変更しているケースは多いようです。
    ②28行目 ---
    │×変更前
    │CPPFLAGS = /I. /DHAVE_PTW32_CONFIG_H
    │〇変更後
    │CPPFLAGS = /I. /DHAVE_PTW32_CONFIG_H /D_TIMESPEC_DEFINED=1			─「POSIX Threads for Win32」は古いVC++のためにstruct timespecを定義しているが、VS2015にはstruct timespecの定義が追加されており「POSIX Threads for Win32」の定義と衝突するようになったので、それを回避する。
  ・以下のコマンドを実行する。
  　│"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64	…VS2015 x64 Native Tools コマンド プロンプト
  　│nmake clean VC									…to build the MSVC dll with C cleanup code
  　│nmake clean VC-debug								…to build the debug MSVC dll with C cleanup code
  ・以下のファイルを残して、それ以外のファイルとフォルダを全て削除する。
  　│pthread.h			┐
  　│sched.h			├アプリケーションからインクルードするファイル。sched.hはpthread.hの中でインクルードされているのでアプリケーションから明示的にインクルードしてもしなくても構いません。
  　│semaphore.h		┘
  　│pthreadVC2_x64.dll	┬リリース版DLLとインポートライブラリ
  　│pthreadVC2_x64.lib	┘
  　│pthreadVC2_x64d.dll	┬デバッグ版DLLとインポートライブラリ
  　│pthreadVC2_x64d.lib	┘
  ・以下のファイルを、/Home/Share/Piece/clip/tool/ へ移動する。(/Home/Share/Piece/clip/tool/ にPATHが通っている前提です。もし通っていない場合は、別のPATHが通っているフォルダに移動して下さい。)
  　│pthreadVC2_x64.dll
  　│pthreadVC2_x64d.dll
  以上です。
