Day1-C语言多线程1-基于线程

补充:不确定类型指针 void *

  • char *
#include <stdio.h>
void My_Func(void *arg)
{
    printf("arg -> %s\n", arg);
}
int main()
{
    printf("Anything I do, I spend a lot of time. I do it with passion and intensity. I want to be in charge. \n");
    char param[100];
    gets(param);
    My_Func(param);

    return 0;
}

在这里插入图片描述

  • int *
#include <stdio.h>

void My_Func(void *arg)
{
    printf("arg -> %d\n", *(int *)arg); // 2强转
}

int main()
{
    printf("Anything I do, I spend a lot of time. I do it with passion and intensity. I want to be in charge. \n");
    int param;
    scanf("%d", &param); 
    My_Func(&param); // 1传入地址

    return 0;
}

在这里插入图片描述

时间:2021年7月17日15:36:25

pthread_create 创建一个新的线程,并让它可执行。下面是关于参数的说明:

SYNOPSIS
       #include <pthread.h>

       int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
                          void *(*start_routine) (void *), void *arg);
argument1:线程的ID的地址
argument2:设置线程属性的地址
argument3:运行函数的地址
argument4:运行函数的参数的地址


基于线程的C语言多线程

代码如下:
example1.c

#include<stdio.h>
#include<stdlib.h>
#include<pthread.h>//头文件

//线程要运行的函数
//注意函数返回类型,参数类型以及要有return
void* myFunc1(void* arg)
{
	printf("Hello World,i am myFunc1\n");
	return NULL;
}


int main(){

	//声明一个线程
	pthread_t th;

	//创建一个线程
	pthread_create(&th, NULL,myFunc1,NULL);//参数分别是:线程ID,线程属性,运行函数,运行函数参数
        
	//等待线程执行完毕(main函数执行完毕,线程没执行玩也会直接结束,所以要等待线程执行完毕.)
	pthread_join(th,NULL);
	
	return 0;
}


example1s.c

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

void* myFunc(void* arg)
{
	printf("Hello World\n");
	return NULL;
}


int main(){

	//声明一个线程
	pthread_t th;

	//创建一个线程
	pthread_create(&th, NULL,myFunc,NULL);
        
	//等待线程执行完毕
	pthread_join(th,NULL);
	

	return 0;
}

运行结果:

Hello World


example2.c

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

void *myFunc(void *arg)
{
	int i;

	//需要进行强制类型转换
	char *name = (char *)arg;
	for (i = 0; i < 100; i++)
	{
		printf("%s:%d\n", name, i);
	}
	return NULL;
}

int main()
{

	//声明两个线程
	pthread_t th1;
	pthread_t th2;

	//创建两个线程
	pthread_create(&th1, NULL, myFunc, "th1");
	pthread_create(&th2, NULL, myFunc, "th2");

	//等待线程执行完毕
	pthread_join(th1, NULL);
	pthread_join(th2, NULL);

	return 0;
}

运行结果:(不是每次都一样)

th1:0
th1:1 
th1:2 
th1:3 
th1:4 
th1:5 
th1:6 
th1:7 
th1:8 
th1:9 
th1:10
th1:11
th1:12
th1:13
th1:14
th1:15
th1:16
th1:17
th1:18
th1:19
th1:20
th1:21
th1:22
th1:23
th1:24
th1:25
th1:26
th1:27
th1:28
th1:29
th1:30
th1:31
th1:32
th1:33
th1:34
th1:35
th1:36
th1:37
th1:38
th1:39
th1:40
th1:41
th1:42
th1:43
th1:44
th1:45
th1:46
th1:47
th1:48
th1:49
th1:50
th1:51
th1:52
th1:53
th1:54
th1:55
th1:56
th1:57
th1:58
th1:59
th1:60
th1:61
th1:62
th1:63
th1:64
th1:65
th1:66
th1:67
th1:68
th1:69
th1:70
th1:71
th1:72
th1:73
th1:74
th1:75
th1:76
th1:77
th1:78
th1:79
th1:80
th1:81
th1:82
th1:83
th1:84
th1:85
th1:86
th2:0
th2:1
th2:2
th2:3
th2:4
th2:5
th2:6
th2:7
th2:8
th2:9
th2:10
th2:11
th2:12
th2:13
th2:14
th2:15
th2:16
th2:17
th2:18
th2:19
th2:20
th2:21
th2:22
th2:23
th2:24
th2:25
th2:26
th2:27
th2:28
th2:29
th2:30
th2:31
th2:32
th2:33
th2:34
th2:35
th2:36
th2:37
th2:38
th2:39
th2:40
th2:41
th2:42
th2:43
th2:44
th2:45
th2:46
th2:47
th2:48
th2:49
th2:50
th2:51
th2:52
th2:53
th2:54
th2:55
th2:56
th2:57
th2:58
th2:59
th2:60
th2:61
th2:62
th2:63
th2:64
th2:65
th2:66
th2:67
th2:68
th2:69
th2:70
th2:71
th2:72
th2:73
th2:74
th2:75
th2:76
th2:77
th2:78
th2:79
th2:80
th2:81
th2:82
th2:83
th2:84
th2:85
th2:86
th2:87
th2:88
th2:89
th2:90
th2:91
th2:92
th2:93
th2:94
th2:95
th2:96
th2:97
th2:98
th2:99
th1:87
th1:88
th1:89
th1:90
th1:91
th1:92
th1:93
th1:94
th1:95
th1:96
th1:97
th1:98
th1:99

下一节: Day2-C语言多线程1-基于线程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值