新闻中心

EEPW首页>嵌入式系统>设计应用> ARM的嵌入式Linux移植体验之应用实例

ARM的嵌入式Linux移植体验之应用实例

作者: 时间:2012-05-11 来源:网络 收藏

b->writepos++;

if(b->writepos>=BUFFER_SIZE)

b->writepos=0;

/*设置缓冲区非空的条件变量*/

pthread_cond_signal(b->notempty);

pthread_mutex_unlock(b->lock);

}

/*从缓冲区中取出整数*/

intget(structprodcons*b)

{

intdata;

pthread_mutex_lock(b->lock);

/*等待缓冲区非空*/

if(b->writepos==b->readpos)

{

pthread_cond_wait(b->notempty,b->lock);

}

/*读数据,移动读指针*/

data=b->buffer[b->readpos];

b->readpos++;

if(b->readpos>=BUFFER_SIZE)

b->readpos=0;

/*设置缓冲区未满的条件变量*/

pthread_cond_signal(b->notfull);

pthread_mutex_unlock(b->lock);

returndata;

}

/*测试:生产者线程将1到10000的整数送入缓冲区,消费者线

程从缓冲区中获取整数,两者都打印信息*/

#defineOVER(-1)

structprodconsbuffer;

void*producer(void*data)

{

intn;

for(n=0;n10000;n++)

{

printf(%d--->n,n);

put(buffer,n);

}put(buffer,OVER);

returnNULL;

}

void*consumer(void*data)

{

intd;

while(1)

{

d=get(buffer);

if(d==OVER)

break;

printf(--->%dn,d);

}

returnNULL;

}

intmain(void)

{

pthread_tth_a,th_b;

void*retval;

init(buffer);

/*创建生产者和消费者线程*/

pthread_create(th_a,NULL,producer,0);

pthread_create(th_b,NULL,consumer,0);

/*等待两个线程结束*/

pthread_join(th_a,retval);

pthread_join(th_b,retval);

return0;

}

4.小结

本章主要给出了平台下文件、进程控制与通信、线程控制与通信的编程。至此,一个完整的,涉及硬件原理、Bootloader、操作系统及文件系统、驱动程序开发及程序编写的系列讲解就全部结束了。

linux操作系统文章专题:linux操作系统详解(linux不再难懂)

上一页 1 2 3 4 5 下一页

评论


相关推荐

技术专区

关闭