下面的**手動建立了兩個執行緒,乙個執行緒是讀取串列埠的資料,另乙個執行緒是通過udp來讀取網路通訊收到的資料。加上main函式的執行緒,一共三個執行緒。
先簡單講一下多執行緒的建立,
pthread_t serial;
int ser = pthread_create(&serial,null,connectserial,null);
if(ser !=
0)
connectserial是建立的執行緒的入口函式。
void *connectserial(void *args)
serialclose(fd);
}
完整**:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
std::vector
basebuff(1024*1024*10,0);
std::vector
roverbuff(1024*1024*10,0);
long
int baselen = 0;
long
int roverlen = 0;
void *creatwifi(void *args)
if (bind(sock, (struct sockaddr *)&addr, sizeof(addr)) < 0)
//long int roverptr = 0;
struct sockaddr_in clientaddr;
int n;
int len = sizeof(clientaddr);
while (1)
else
} }void inttohex(int dec,char *output,int length)
}void *connectserial(void *args)
serialclose(fd);
}int main()
pthread_t wifi;
int wif = pthread_create(&wifi,null,creatwifi,null);
if(wif != 0)
file *base;
base = fopen("/home/pi/wifi/base.txt","w+");
if(base == null)
file *rover;
rover = fopen("/home/pi/wifi/rover.txt","w+");
if(rover == null)
long
int blen = 0;
long
int rlen = 0;
while(1)
if(roverlen - rlen >= 100)
}pthread_exit(null);
return
0;}
上面的**用到了wiring pi庫,所以編譯語句:
g++
-wall serial.cpp -o serial -lwiringpi
-lpthread
如果沒有使用wiringpi庫的編譯時去掉-lwiringpi。 樹莓派3下PDO訪問MSSQL
手頭的樹莓派3已經裝了lamp,也做成功了用python借助freetds訪問mssql的實驗,然後想測試下用php指令碼直接訪問mssql。查閱了一些資料,發現可以用php5 sybase實現。你沒看錯,就是sybase。在ms sql server的發展歷史中,微軟最初就是和sybase合作的,...
windows下C多執行緒
看到乙個簡單的windows程式設計例項,給大家分享一下 這個例項主要用createthread為乙個宣告的方法建立乙個程序,這個被建立的方法必須用dword winapi 修飾,需要有lpvoid 型別的引數,如果沒有這個引數,在建立程序時要對這個方法強制型別中轉換 dword winapi my...
c 下使用多執行緒
執行緒主要由cup暫存器 呼叫棧 執行緒本地儲存器 thread local storage,tls 組成。cup暫存器主要記錄當前所執行執行緒的狀態,呼叫棧主要用於維護執行緒所呼叫到的記憶體和資料,tsl主要用於存放執行緒的狀態資訊。前台執行緒 只有所有的前台執行緒全部關閉,才能完成程式關閉。後台...