- 论坛徽章:
- 0
|
下面为信号量测试程序,此程序在虚拟机下gcc编译运行后信号量起作用了,程序打印thread_one 1 后睡眠,但通过交叉编译后在开发板上运行信号量不起作用,thread_one 1和thread_one 2都打印了。开发板是 2.6.27的内核。
#include <pthread.h>
#include <semaphore.h>
#include <sys/types.h>
#include <stdio.h>
#include <unistd.h>
sem_t sem_id;
void* thread_one_fun(void *arg)
{
printf("thread_one 1\n");
sem_wait(&sem_id);
printf("thread_one 2");
sem_post(&sem_id);
}
int main(int argc,char *argv[])
{
int ret;
pthread_t id1;
ret=sem_init(&sem_id, 0, 0);
printf("ret=%d\n",ret);
pthread_create(&id1,NULL,thread_one_fun, NULL);
pthread_join(id1,NULL);
return 0;
}
|
|