樹莓派3B Linux下C 多執行緒程式設計

2021-08-13 16:42:15 字數 1816 閱讀 3258

下面的**手動建立了兩個執行緒,乙個執行緒是讀取串列埠的資料,另乙個執行緒是通過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主要用於存放執行緒的狀態資訊。前台執行緒 只有所有的前台執行緒全部關閉,才能完成程式關閉。後台...