您好,登錄后才能下訂單哦!
在 Linux 中,為 C++ 多線程程序設置線程棧大小需要使用 pthread_attr_t
屬性對象
#include <iostream>
#include <pthread.h>
#include <unistd.h>
#include <cstdlib>
void *my_thread_function(void *arg) {
// 線程執行的代碼
return nullptr;
}
int main() {
pthread_t thread_id;
int stack_size = 8192; // 設置線程棧大小為 8KB,可以根據需要調整
// 創建線程屬性對象
pthread_attr_t attr;
if (pthread_attr_init(&attr) != 0) {
std::cerr << "Error: pthread_attr_init" << std::endl;
return 1;
}
// 設置線程棧大小
if (pthread_attr_setstacksize(&attr, stack_size) != 0) {
std::cerr << "Error: pthread_attr_setstacksize" << std::endl;
pthread_attr_destroy(&attr);
return 1;
}
// 創建線程
if (pthread_create(&thread_id, &attr, my_thread_function, nullptr) != 0) {
std::cerr << "Error: pthread_create" << std::endl;
pthread_attr_destroy(&attr);
return 1;
}
// 等待線程結束
pthread_join(thread_id, nullptr);
// 銷毀線程屬性對象
pthread_attr_destroy(&attr);
return 0;
}
在這個示例中,我們首先創建了一個 pthread_attr_t
屬性對象,然后使用 pthread_attr_setstacksize()
函數設置了線程棧的大小。接下來,我們使用 pthread_create()
函數創建了一個線程,并將創建的線程與屬性對象關聯。最后,我們等待線程結束并銷毀線程屬性對象。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。