C++睡眠pthread冲突
C++ sleep pthread conflict
我正在写一段关于死锁及其检测的代码,我在Ubuntu 12.10上使用eclipse Juno C/C++,64位。问题是当我使用时
睡眠(1)
,我得到这个
sleep未在此范围中声明
当我构建项目时,我试图包括
include<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);
}
........
附言:我按照这些说明让pthreads在其他项目中工作,我也为这个项目做了同样的事情http://blog.asteriosk.gr/2009/02/15/adding-pthread-to-eclipse-for-using-posix-threads/
p.s.我正在和一个朋友一起做这个项目,我使用了他使用的相同代码,但仍然会出现这些错误,而他没有
当您#include < unistd.h>
时,您修复了睡眠函数查找问题,现在您有pthread库问题。
接下来,您需要#include <pthread.h>
并将您的应用程序与pthread库链接
听起来你有两个不同的错误,
第一个sleep()
是未定义的,因为您忘记包含unistd.h。我也会包含pthread.h,但听起来它可能会被您包含的某个标头拉入。
其次,听起来你有一个链接器错误。另外,你可以用-phread编译,也可以把-lpthread添加到链接器中。它没有显示的原因是,只有在编译完文件后才能进行链接,而第一个错误就是阻止了链接。我敢打赌,ld出于某种原因不喜欢-ppthread(你安装了libpthread-dev吗?)。您可以尝试将-phread更改为-lpthread。
- 写入位置0x0000000C时发生访问冲突
- GL_SHADERSTORAGE_BUFFER位置是否与其他着色器位置冲突
- 使用cmake从源代码构建MySQL连接器/C++失败(与以前的声明冲突)
- 引发异常:读取访问冲突**dynamicArray**为0x1118235.发生
- C++LinkedList问题.数据类型之间存在冲突?没有匹配的构造函数
- 链表中写入访问冲突的未知原因
- C++中的openCV Mat访问冲突
- 如何使 std::sort 在 std::swap 和我的命名空间的模板化交换之间没有名称冲突?
- C++尝试深度复制唯一指针时出现内存访问冲突
- 错误:使用通用引用的声明冲突
- 如何解决GTest和LibTorch联动冲突
- 两个运营商的一些奇怪的冲突<<
- 如何在多个线程中创建 QSql数据库连接时防止名称冲突
- C++ 中动态二维数组的访问冲突
- 从嵌套循环中的 std::list 中删除将返回访问冲突
- C++17 十六进制浮点文字单精度后缀冲突?
- 结构字段名称与 GDB 中的 STL 数组冲突
- 写入访问冲突异常
- 函数 AfxEndThread 中的读取访问冲突"pThread-> was nullptr"
- C++睡眠pthread冲突