你试试我这段源码,看看报错不:
#include <stdio.h>
#include <semaphore.h>
#include <pthread.h>
#include <unistd.h>
sem_t sem;
void* change_resource(void *res)
{
char *msg = (char*)res;
qDebug("1111");
while (1) {
sem_wait(&sem);
strcat(msg, "a");
qDebug("resource changed with value: %s\n", msg);
}
}
int main()
{
ret = sem_init(&sem, 0, 0);
if (ret == -1) {
printf("sem_init failed \n");
return -1;
}
ret = pthread_create(&thread, NULL, change_resource, (void*)resource);
if (ret != 0) {
printf("pthread_create failed \n");
return -1;
}
while (1) {
sem_post(&sem);
sleep(1);
}
}
semaphore pa;//先把变量声明写完,看看还报不报错,有时候语句写不完是会报错的。
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632