信号量 的问题

来源:互联网 发布:基本sql语句 编辑:程序博客网 时间:2024/05/17 22:15
QT线程中 使用 信号量:
1  使用QT的 信号量, QSemaphore
2  使用Linux sembuf
3  使用POSIX semaphore.h

测试后 使用1/2 方法都没有预期效果, 原因未知
使用 3 方法, 线程阻塞成功。

注: 使用3 方法时, sem_wait() 失效, reboot 后恢复 。。

1
#include <qsemaphore.h>
QSemaphore *sem;
sem = new QSemaphore(1);
(*sem)--;
(*sem)++;


2
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
sembuf  sem;
int semid;

semid = semget(KEY, 0, IPC_CREAT);
sem.sem_num = 1;
sem.sem_op = -1;
sem.sem_flg = 0;
semop(semid, &sem, 0);
sem.sem_op = 1;
semop(semid, &sem. 0);




3
#include <semaphore.h>
sem_t sem;
sem_init(&sem, 0, 0)       //The second parameter must be Zero
sem_wait(&sem);
sem_post(&sem);

原创粉丝点击