バージョンpthreadVC.lib
で動作する小さなプログラムを作成しました。Win32
Visual Studio 2013 を使用しています。
同じプログラムのプログラム設定を変更x64
し、pthreadVC2.lib (x64 構成用) をリンクpthread_join
すると、使用した参加の代わりにプログラムがクラッシュしましpthread_cancel
たが、同じ問題が発生しました。また、x64用に自分でpthreadを構築し、そのライブラリをリンクしましたが、それでも同じ問題があります。
私のテストコード
#include<stdio.h>
#include<pthread.h>
pthread_mutex_t mutex = NULL;
pthread_cond_t cond = NULL;
void test(){
pthread_mutex_lock(&mutex);
printf("\n Threads Working");
pthread_mutex_unlock(&mutex);
}
void main() {
pthread_t threadid;
pthread_create(&threadid,NULL,(void*)test,NULL);
pthread_join(threadid,NULL);
printf("\n FINISH ");
if (getchar())
return;
}
x64構成で取得するエラーは
Pthread64_bit.exe の 0x0000000180002C70 (pthread_dll.dll) で未処理の例外: 0xC0000005: 場所 0x000000000000001A を読み取るアクセス違反。
編集:また、C の pthreads
から例をコピーしました – 最小限の作業例
で、実行しようとしましたが、同じエラーが発生しましたpthread_join
。
それで、他に必要な設定があるか、x64
または私が見逃している場所があるか教えていただけますか?