亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

一個簡單的C語言實現(xiàn)的線程示例

原創(chuàng) 2016-11-17 10:24:37 796
摘要:一個簡單的C語言實現(xiàn)的線程示例在看《Beginning Linux Programming》時,為了更好的理解線程的概念,書中列舉了這樣一個小例子:#include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <string.h> #in

一個簡單的C語言實現(xiàn)的線程示例

在看《Beginning Linux Programming》時,為了更好的理解線程的概念,書中列舉了這樣一個小例子:

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <pthread.h>

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 創(chuàng)建新線程, pthread_create 的定義如下:

#include <pthread.h>

int pthread_create(pthread_t *thread, pthread_attr_t *attr, void *(*start_routine)(void *), void *arg);

根據(jù) pthread_create 要求, thread_function 只有一個指向void的指針作為參數(shù),返回的也是指向void的指針。
當創(chuàng)建新的線程后,新線程在 thread_function 中開始執(zhí)行,打印自己的參數(shù)。
原有線程在確保新線程啟動后調用 pthread_join 函數(shù)等到線程結束,并且將新線程的返回值存在 thread_result 指針里。
新線程可以直接訪問 message 數(shù)組變量,如果是調用 fork() 的話就沒有這種效果。

python也提供了處理線程相關的 thread 和 基于它上面抽象的 threading 等模塊,將在以后的文章中探究。

不由感慨,如果不多懂一些C語言,那么很難提高自己Python水平啊。


發(fā)佈手記

熱門詞條