デッドロックとその検出に関するコードを書いています。Ubuntu 12.10、64 ビットで eclipse Juno C/C++ を使用しています。問題は私が使用するときです
スリープ(1)
、私はこれを得る
sleep はこのスコープで宣言されていませんでした
プロジェクトをビルドするときに、含めようとしました
インクルード < unistd.h>
、しかし、その後、すべての pthread 関数は次のようになります
pthread_join
次のようなエラーが表示されます
pthread_join への未定義の参照
、#include < unistd.h>がなければ、そのようなエラーは表示されません。
サンプルコード:
#include <unistd.h>
#include <iostream>
#include <semaphore.h>
#include <queue>
#include <stdlib.h>
using namespace std;
pthread_mutex_t mutex;
sem_t sem; //used for writing in the console
.......
void cross(Batman b) {
// code to check traffic from the right, use counters, condition
sem_wait(&sem);
cout << "BAT " << b.num << " from " << b.direction << " crossing" << endl;
sem_post(&sem);
sleep(1);
}
........
ps私はこれらの指示に従ってpthreadsを他のプロジェクトで動作させ、このプロジェクトでも同じことをしました http://blog.asteriosk.gr/2009/02/15/adding-pthread-to-eclipse-for-using-posix-スレッド/
ps私は友人とこのプロジェクトに取り組んでおり、彼が使用しているのと同じコードを使用しましたが、彼はそうではありませんが、それでもエラーが発生します