亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

想要用兩個循環同時運行也行?該怎么實現

想要用兩個循環同時運行也行?該怎么實現

C++
子衿沉夜 2023-03-03 17:14:27
我要同時運行兩個函數,一個用按鍵wasd控制,一個用上下左右鍵控制。該怎么遍?????急急急啊
查看完整描述

2 回答

?
嗶嗶one

TA貢獻1854條經驗 獲得超8個贊

這個是完全取決于你的需求。如果你只是做控制同一個數據源使用的,就可以一個線程,分別在收到不同的消息,調用不同的函數。畢竟你只有一個鍵盤,不會真的同時收到兩個事件。這種構架下面,兩個函數必須比較短不能有堵塞,或者等待(大多數情況是這樣的)。另外一種情況是,當你的處理量比較大,則需要多線程,也就是三個線程,一個線程收消息事件,另外兩個分別處理事件,如果你不是多核CPU,其結果和上面的構架是一樣的。在多線程構架下面,如果是對同一個數據體處理,那么效果和前者是一樣,甚至更差。至于這么建立多線程,我就不說,這個真的需要你自己去看看。

查看完整回答
反對 回復 2023-03-06
?
夢里花落0921

TA貢獻1772條經驗 獲得超6個贊

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 關注
  • 168 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號