线程运行程序c语言,理解线程1 C语言示例的程序
一個簡單的C語言實現的線程示例
在看《Beginning Linux Programming》時,為了更好的理解線程的概念,書中列舉了這樣一個小例子:
#include
#include
#include
#include
#include
void *thread_function(void *arg);
char message[] = "Hello World";
int main() {
int res;
pthread_t a_thread;
void *thread_result;
res = pthread_create(&a_thread, NULL, thread_function, (void *)message);
if (res != 0) {
perror("Thread creation failed");
exit(EXIT_FAILURE);
}
printf("Waiting for thread to finish...\n");
res = pthread_join(a_thread, &thread_result);
if (res != 0) {
perror("thread join failed");
exit(EXIT_FAILURE);
}
printf("Thread joined, it returned %s\n", (char *)thread_result);
printf("Message is now %s\n", message);
exit(EXIT_SUCCESS);
}
void *thread_function(void *arg) {
printf("thread_function is running, Argument was %s\n", (char *)arg);
sleep(3);
strcpy(message, "Bye!");
pthread_exit("Thank you for the CPU time");
}
將程序編譯鏈接后運行,可以看到下面這樣的結果
? chapter12 ./thread
Waiting for thread to finish...
thread_function is running, Argument was Hello World
Thread joined, it returned Thank you for the CPU time
Message is now Bye!
這里使用 pthread_create 創建新線程, pthread_create 的定義如下:
#include
int pthread_create(pthread_t *thread, pthread_attr_t *attr, void *(*start_routine)(void *), void *arg);
根據 pthread_create 要求, thread_function 只有一個指向void的指針作為參數,返回的也是指向void的指針。
當創建新的線程后,新線程在 thread_function 中開始執行,打印自己的參數。
原有線程在確保新線程啟動后調用 pthread_join 函數等到線程結束,并且將新線程的返回值存在 thread_result 指針里。
新線程可以直接訪問 message 數組變量,如果是調用 fork() 的話就沒有這種效果。
python也提供了處理線程相關的 thread 和 基于它上面抽象的 threading 等模塊,將在以后的文章中探究。
不由感慨,如果不多懂一些C語言,那么很難提高自己Python水平啊。
總結
以上是生活随笔為你收集整理的线程运行程序c语言,理解线程1 C语言示例的程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言中常用的程序,C语言一些常用语句
- 下一篇: c语言常用的异常处理,C语言中的异常处理