1. 程式人生 > 其它 >CentOS8搭建FTP伺服器

CentOS8搭建FTP伺服器

什麼是執行緒



注意:
ps -Lf (程序名字)可以檢視程序的執行緒

Linux核心實現執行緒的原理


首先先介紹一下三級頁表


執行緒建立


注意編譯和連結的使用使用 -pthread表示引入執行緒庫

/*************************************************************************
  > File Name: pthread_test.c
  > Author: shaozheming
  > Mail: [email protected]
  > Created Time: 2022年03月02日 星期三 12時09分06秒
 ************************************************************************/

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

void sys_err(const char *str)
{
	perror(str);
	exit(1);
}

void *func(void *args)
{	
	int i = (int)args;
	printf("I'm %d thread. threadpid: %d, tid: %lu\r\n", i, getpid(), pthread_self());
	return NULL;
}

int main(int argc, char* argv[])
{
	int i;
	pthread_t tid;
	printf("mainpid: %d, tid: %lu\r\n", getpid(), pthread_self());

	for(i = 0; i < 5; ++i){
		/* 四個引數分別是執行緒id,執行緒屬性,回撥函式和回撥函式引數 */
		int ret = pthread_create(&tid, NULL, func, (void *)i);
		if(ret < 0){
			sys_err("pthread create error!\r\n");
		}
	}
	sleep(1);
	return 0;
}



如果傳遞地址,相當於間接引用,執行緒訪問main執行緒的棧地址,如果main中i變化,原來i的執行緒也會變

執行緒間共享全域性變數

pthread_exit函式


pthread_join函式



回收值是整型,最後就得是整型指標,void* 對應的就是void**

注意第二個引數是執行緒函式的返回值


pthread_detach


執行緒中的檢查出錯

pthread_cancel



可以殺死程序,需要進入核心,如果執行緒只有一個while迴圈,即沒有系統呼叫,說明進不了核心,就殺死不了

程序執行緒控制原語比對

執行緒屬性

Linux核心2.2版本的屬性


使用執行緒注意事項

主要是給自己看的,所以肯定會出現很多錯誤哈哈哈哈哈