为了账号安全,请及时绑定邮箱和手机立即绑定

想要用两个循环同时运行也行?该怎么实现

想要用两个循环同时运行也行?该怎么实现

C++
子衿沉夜 2023-03-03 17:14:27
我要同时运行两个函数,一个用按键wasd控制,一个用上下左右键控制。该怎么遍啊???急急急啊
查看完整描述

2 回答

?
哔哔one

TA贡献1854条经验 获得超8个赞

这个是完全取决于你的需求。如果你只是做控制同一个数据源使用的,就可以一个线程,分别在收到不同的消息,调用不同的函数。毕竟你只有一个键盘,不会真的同时收到两个事件。这种构架下面,两个函数必须比较短不能有堵塞,或者等待(大多数情况是这样的)。另外一种情况是,当你的处理量比较大,则需要多线程,也就是三个线程,一个线程收消息事件,另外两个分别处理事件,如果你不是多核CPU,其结果和上面的构架是一样的。在多线程构架下面,如果是对同一个数据体处理,那么效果和前者是一样,甚至更差。至于这么建立多线程,我就不说,这个真的需要你自己去看看。

查看完整回答
反对 回复 2023-03-06
?
梦里花落0921

TA贡献1772条经验 获得超5个赞

1、C++多线程也可以使用UNIX C的库函数,pthread_mutex_t,pthread_create,pthread_cond_t,pthread_detach,pthread_mutex_lock/unlock,等等。在使用多线程的时候,你需要先创建线程,使用pthread_create,你可以使主线程等待子线程使用pthread_join,也可以使线程分离,使用pthread_detach。线程使用中最大的问题就是同步问题,一般使用生产着消费者模型进行处理,使用条件变量pthread_cond_t,pthread_mutex,pthread_cond_wait来实现。
2、例程:
//创建5个线程
#include <pthread.h>
#include <stdlib.h>

void* work_thread(void* arg)
{

//线程执行体
return 0;
}
int main(int argc,char* argv[])
{
int nthread = 5;//创建线程的个数
pthread_t tid;//声明一个线程ID的变量;
for(int i=0;i<nthread;i++)
{
pthread_create(&tid,NULL,work_thread,NULL);
}
sleep(60);//睡眠一分钟,你可以看下线程的运行情况,不然主进程会很快节结束了。
}
pthread_create(&tid,NULL,work_thread,NULL);//创建线程的函数,第一个参数返回线程的ID;第二个参数是线程的属性,一般都置为NULL;第三个参数是线程函数,线程在启动以后,会自动执行这个函数;第四个参数是线程函数的参数,如果有需要传递给线程函数的参数,可以放在这个位置,可以是基础类型,如果你有不止一个参数想传进线程函数,可以做一个结构体,然后传入。


查看完整回答
反对 回复 2023-03-06
  • 2 回答
  • 0 关注
  • 92 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信