当前位置: 技术问答>linux和unix
一个linux录音程序,单线程,够吗?
来源: 互联网 发布时间:2015-12-06
本文导语: 我不清楚pthread里,单线程是怎样声明的.. 在录音程序里我想用到线程,是想在录音的时候,我按下暂停,可以让这个线程挂起,按下继续的时候,可 以继续运行它. 请各位帮忙说说,单线程编程到底是怎么做啊.给些参考资料...
我不清楚pthread里,单线程是怎样声明的..
在录音程序里我想用到线程,是想在录音的时候,我按下暂停,可以让这个线程挂起,按下继续的时候,可
以继续运行它.
请各位帮忙说说,单线程编程到底是怎么做啊.给些参考资料,或者指明方向啊
谢谢啊
在录音程序里我想用到线程,是想在录音的时候,我按下暂停,可以让这个线程挂起,按下继续的时候,可
以继续运行它.
请各位帮忙说说,单线程编程到底是怎么做啊.给些参考资料,或者指明方向啊
谢谢啊
|
单线程,只是一个主线程吧。
你自己再建立多一个线程,就是多线程了。
在录音程序里我想用到线程,是想在录音的时候,我按下暂停,可以让这个线程挂起,按下继续的时候,可
以继续运行它.--有相关的PTHREAD开头的函数,或者自己加个变量控制也可以。
你自己再建立多一个线程,就是多线程了。
在录音程序里我想用到线程,是想在录音的时候,我按下暂停,可以让这个线程挂起,按下继续的时候,可
以继续运行它.--有相关的PTHREAD开头的函数,或者自己加个变量控制也可以。
|
你不开多线程的话,你的程序本身就是单线程的
|
你让你的线程sleep就能挂起,比如:
while(condition)
sleep(1);
然后你可以通过改变condition来控制挂起与否!
while(condition)
sleep(1);
然后你可以通过改变condition来控制挂起与否!
|
你可以利用单线程实现,也可以用多线程实现,但单线程实现的应用中,你要考虑采集数据到达一定量的时候的处理,如做编码压缩,写文件等;如果采用多线程的话,那么这些事情可以并行以流水线的形式来进行,下面是pthread的用法,当然,你也可以参考其它的代码,我的不是唯一的答案,任何一本介绍Linux下编程的教材应该都会教多线程这一个章节。
我曾经做一个播放器软件,一个线程读文件,一个线程解码,一个线程播音频,一个文件播视频,所以这个时候要考虑线程的同步问题,我想你的应用也应该考虑到这些问题!
另外,如果一个应用只有一个线程的话,那就是主线程,也就是进程中唯一的,这个相信你了解进程与线程的概念就知道了,相信你已经知道了!祝好运!
pthread_t t;
pthread_attr_t attr;
pthread_attr_init(&attr);
pthread_attr_setinheritsched(&attr, PTHREAD_INHERIT_SCHED);
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
int ret = pthread_create( &t, &attr, func, NULL );
pthread_attr_destroy(&attr);
func() -------> main loop function
我曾经做一个播放器软件,一个线程读文件,一个线程解码,一个线程播音频,一个文件播视频,所以这个时候要考虑线程的同步问题,我想你的应用也应该考虑到这些问题!
另外,如果一个应用只有一个线程的话,那就是主线程,也就是进程中唯一的,这个相信你了解进程与线程的概念就知道了,相信你已经知道了!祝好运!
pthread_t t;
pthread_attr_t attr;
pthread_attr_init(&attr);
pthread_attr_setinheritsched(&attr, PTHREAD_INHERIT_SCHED);
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
int ret = pthread_create( &t, &attr, func, NULL );
pthread_attr_destroy(&attr);
func() -------> main loop function
|
一个线程(很多时候,就是一个函数吧)在运行的时候要如何让它挂起呢,,能大概说说吗?或者指导个学习方向吧
--线程序其实就是一个简单的循环,出了循环线程就退出了,
while(线程运行标志变量)
{
usleep(10000);
if(jobFlag)//如果需要暂停,那么把jobFlag=false,需要继续执行=true
{
//这里做你重复要做的事情
}
}
--线程序其实就是一个简单的循环,出了循环线程就退出了,
while(线程运行标志变量)
{
usleep(10000);
if(jobFlag)//如果需要暂停,那么把jobFlag=false,需要继续执行=true
{
//这里做你重复要做的事情
}
}
|
还是多线程好些吧,主线程响应界面动作,
其他线程通过接收主线程的信号来控制播放动作。
其他线程通过接收主线程的信号来控制播放动作。