c语言线程参数
㈠ c语言线程简单例题
您好,这样的:
通过pthread_join得到的终止状态是不同的,总结如下:
1.如果thread线程通过return返回,rval_ptr所指向的单元里存放的是thread线程函数的返回值。
2. 如果thread线程被别的线程调用pthread_cancel异常终止掉,rval_ptr所指向的单元里存放的是常数PTHREAD_CANCELED。
3.如果thread线程是自己调用pthread_exit终止的,rval_ptr所指向的单元存放的是传给pthread_exit的参数。
㈡ (C语言)为什么我这样调用线程里的结构体参数会报错
没有吧void*类型转化成struct text*类型
㈢ c语言多线程问题
#include <stdio.h>
#include <process.h>
#include <windows.h>
long g_nNum; //全局资源
unsigned int __stdcall Fun(void *pPM); //线程函数
const int THREAD_NUM = 10; //子线程个数
int main()
{
g_nNum = 0;
HANDLE handle[THREAD_NUM];
int i = 0;
while (i < THREAD_NUM)
{
handle[i] = (HANDLE)_beginthreadex(NULL, 0, Fun, &i, 0, NULL);
i++;//等子线程接收到参数时主线程可能改变了这个i的值
}
//保证子线程已全部运行结束
WaitForMultipleObjects(THREAD_NUM, handle, TRUE, INFINITE);
return 0;
}
unsigned int __stdcall Fun(void *pPM)
{
//由于创建线程是要一定的开销的,所以新线程并不能第一时间执行到这来
int nThreadNum = *(int *)pPM; //子线程获取参数
Sleep(75);//some work should to do
g_nNum++; //处理全局资源
Sleep(1);//some work should to do
printf("线程编号为%d 全局资源值为%d\n", nThreadNum, g_nNum);
getch();
return 0;
}
㈣ (C语言)多线程beginthreadex的第四个参数(结构体)到底怎么设置才能正确传递数值
第四个参数的类型是LPVOID(long型指针),可以进行任意类型的转换,具体函数传参可以参考http://blog.csdn.net/morewindows/article/details/7421759。
㈤ C语言创建线程问题(急)
你调用pthread_create之后就return掉了,然后程序结束了,在thread_fun执行之前就结束了,自然就没打印那个出来
你可以在pthread_create之后卡个几秒钟(用sleep)或者用pthread_join还是啥的等线程结束再退出,就能看到thread_fun的输出了
㈥ C语言多线程的概念
线程:线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针、程序计数器等),但代码区是共享的,即不同的线程可以执行同样的函数。
多线程:多线程是指程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务,也就是说允许单个程序创建多个并行执行的线程来完成各自的任务。
C语言的开始设计,并未设计多线程的机制,由于随着软硬件的发展及需求的发展。后来C语言才开发了线程库以支持多线程的操作、应用。
主要基于Linux介绍C多线程。在编译C的多线程时候,一方面必须指定Linux C语言线程库多线程库pthread,才可以正确编译(例如:gcc test.c -o test -lpthread);另一方面要包含有关线程头文件#include <pthread.h>。