我正在编写有关死锁及其检测的代码,我在 64 位 Ubuntu 12.10 上使用 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 我正在和一个朋友一起做这个项目,我使用了他使用的相同代码,但仍然出现这些错误,而他没有