永发信息网

关于嵌入式linux系统的问题,多线程,基于arm9开发板

答案:1  悬赏:0  手机版
解决时间 2021-04-25 23:52
关于嵌入式linux系统的问题,多线程,基于arm9开发板
最佳答案
1)
linux二进制可执行文件是无法得转换为代码的,所以修改不了代码,只能找源码去改,改完了重新交叉编译再写进开发板上。
2)
使用linux多线程问题,A中满足条件创建线程B,线程B中满足条件创建线程C,如果你线程A和B没有退出,A和B都会继续执行

实例程序如下:main中十秒后创建线程A ,A中10秒后创建B,B线程十秒后创建线程C,每个线程中都会有打印信息,当出现pthread A pthread B pthread C同时出现时,证明三个线程同时存活
此程序编译时需加-phread参数,例如:cc pthread_join.c -pthread
#include
#include
#include
#include
#include
void * A();//线程函数声明
void * B();
void * C();

void * A()
{
pthread_t b;
int i = 0;
while(i < 50)
{
if (++i == 10)
pthread_create(&b, NULL, (void *)B, NULL );//创建线程B
sleep(1);
printf("pthread A\n");
}
pthread_join(b, NULL);
return 0;
}
void * B()
{
pthread_t c;
int i = 0;
while(i < 30)
{
if (++i == 10)
pthread_create(&c, NULL, (void *)C, NULL );//创建线程C
printf("pthread B\n");
sleep(1);
}
pthread_join(c, NULL);
return 0;
}
void *C()
{
int i = 0;
while(i < 10)//C线程执行10秒后退出,资源在B线程中pthread_join函数回收
{
printf("pthread C\n");
sleep(1);
i++;

}
return 0;
}
int main()
{
pthread_t a;
int i = 0;
while(i < 100)
{
if (++i == 10)
pthread_create(&a, NULL, (void *)A, NULL );//创建线程A
printf("i = %d\n", i );
sleep(1);
}
pthread_join(a, NULL);
return 0;
}
以上是多线程程序的例子

但是,如果你想一个程序调用另一个程序时,你可以这样做:
比如你有三个可执行程序a.out b.out c.out
运行a.out当符合某个程序时使用system("./b.out");调用程序b.out,在b.out程序中以同样的方法调用程序c.out。但此时已经不是多线程了,而是三个不同的进程,进程a.out b.out 和c.out

也可以在上面的程序中十秒的时候创建子进程后,在子进程中以system("./b.out");来运行程序b.out
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
谁帮我翻译一下一段英文
上海去迪拜飞几个小时,上海到迪拜要飞多长时
如何赞美大学辅导员?
痛也是舒服
最近发行国债吗
我装了win7 老是会切换窗口
玛雅房屋香缇苑店在哪里啊,我有事要去这个地
给个伤心的音乐、要那种撕心裂肺的、
中国大樱桃哪里的好
N86好``还是N96好```给个意见
QQ飞车宠物小鸭糖糖到10级以后+引擎,开板车
梦幻西游怎么强行离婚3天么到我又去月老那点
我妈妈摔倒了,胳膊抬不起来
把图片放在空间首页,链接总是去不掉。每次一
彩虹岛迷之仓库在哪里,天涯明月刀帮派仓库的
推荐资讯
中国最需要什么经济学家???!!
66号公路潮牌烤吧怎么去啊,有知道地址的么
哪里有乌龟放生的地方?
身心什么的成语,中什么身什么成语
比亚迪 byd的意义
跪求几首励志歌曲中文的
如果一个QQ号不想用了,最好的最合适的解决办
红钻开通后 可以隐藏吗
为什么我的屏幕分辨率调最大还是玩游戏看不到
清丰县柳格镇在哪里啊,我有事要去这个地方
平行四边形ABCD的对角线AC,BD相交于O点,E,
乐趣音乐工作室在什么地方啊,我要过去处理事
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?