作业帮 > 综合 > 作业

HANDLE obj; obj = CreateMutex(NULL,FALSE,NULL)对应的linux下如何改写,

来源:学生作业帮 编辑:搜搜考试网作业帮 分类:综合作业 时间:2024/07/30 13:17:59
HANDLE obj; obj = CreateMutex(NULL,FALSE,NULL)对应的linux下如何改写,返回值也要是obj类型.
// 创建互斥对象WIN32下程序。#ifdef _WIN32THREADS if(NULL == (in_->mutex = knCreateMutex("ThreadPoolMutex"))) { knError("knCreateTPool() warning:knCreateMutex() forfailed.\n"); return -1; } #endif LINUX程序#ifdef _LINUX32THREADS//mod if(0!= knCreateMutex("ThreadMutex")){ knError("knCreateTPool() warning:knCreateMutex_LINUX() for failed.\n"); return -1; }#endif请问这样写LINUX程序对吗?
HANDLE obj; obj = CreateMutex(NULL,FALSE,NULL)对应的linux下如何改写,
你用的MFC还是?
Linux下面当然有mutex,线程中是pthread_muxtex前缀的一系列函数,进程中用的是mutex前缀的一系列函数,你执行man -k mutex查询下就知道了,包括初始化和锁定解锁等操作.
不过返回值肯定不是HANDLE了,HANDLE是WINDOWS里面才有的数据结构吧...
不知道你做的是什么,不过建议你把整个程序都修改了吧,只改这个API恐怕没用.
再问: // 创建互斥对象WIN32下程序。 #ifdef _WIN32THREADS if(NULL == (in_->mutex = knCreateMutex("ThreadPoolMutex"))) { knError("knCreateTPool() warning: knCreateMutex() forfailed.\n"); return -1; } #endif LINUX程序#ifdef _LINUX32THREADS//mod if(0!= knCreateMutex("ThreadMutex")){ knError("knCreateTPool() warning: knCreateMutex_LINUX() for failed.\n"); return -1; }#endif请问这样写LINUX程序对吗?在线等。
再答: knCreateMutex是你自定义的函数??? Linux下面这样就可以了.(需要头文件pthread.h,编译时候需要-lpthread选项) pthread_mutex_t knCreateTPool; pthread_mutex_init(&knCreateTPool,NULL); 但是就算这样写了它也不是HANDLE类型的数据。 我觉得你还是针对Linux和windows分别把线程创建、同步等等的操作写成一个新函数,写在不同的头文件中,不同的情况下包含不同的头文件。