关于线程创建的问题
2007-11-09 21:23
344 查看
#include <stdio.h>
#include <pthread.h>
#include<stdlib.h>
#include<sys/types.h>
#include<unistd.h>
void cout(char *s)
{
printf("%s /n",s);
}
int main()
{
pthread_t id;
int i,ret;
char *s="I love China!";
ret=pthread_create(&id,NULL,(void *)cout,s);
if(ret!=0){
printf ("Create pthread error!/n");
exit (1);
}
for(i=0;i<3;i++)
{
sleep(2);
printf("This is the main process./n");
printf("The thread_PID is :%u/n",id);
pthread_join(id,NULL);
}
return (0);
}
对于这段程序来讲,如果读者感兴趣的话,将char *s有键盘输入,看看会发生什么情况?
对于这个简单的线程例子,需要注意以下几个问题,首先是线程号ptread_t是unsigned long int 类型,而进程号是int类型。其次,在对线程创建函数来讲,尤其是对自定义函数中包括多个参数的函数来讲,在创建函数的第四个参数传递是一定是指针类型。
#include <pthread.h>
#include<stdlib.h>
#include<sys/types.h>
#include<unistd.h>
void cout(char *s)
{
printf("%s /n",s);
}
int main()
{
pthread_t id;
int i,ret;
char *s="I love China!";
ret=pthread_create(&id,NULL,(void *)cout,s);
if(ret!=0){
printf ("Create pthread error!/n");
exit (1);
}
for(i=0;i<3;i++)
{
sleep(2);
printf("This is the main process./n");
printf("The thread_PID is :%u/n",id);
pthread_join(id,NULL);
}
return (0);
}
对于这段程序来讲,如果读者感兴趣的话,将char *s有键盘输入,看看会发生什么情况?
对于这个简单的线程例子,需要注意以下几个问题,首先是线程号ptread_t是unsigned long int 类型,而进程号是int类型。其次,在对线程创建函数来讲,尤其是对自定义函数中包括多个参数的函数来讲,在创建函数的第四个参数传递是一定是指针类型。
相关文章推荐
- 4000 c#关于“线程间操作无效: 从不是创建控件的线程访问它”的问题
- 关于创建线程后CPU使用率100%的问题
- 关于MFC DLL CWinApp::InitInstance()中创建线程的问题 易造成死锁
- 关于VS编译出现“从不是创建控件 control name 的线程访问它”问题的解决方案
- 关于海思HI3531A平台使用std::thread创建线程问题(未解决)
- 关于Win32 API(VC作为程序设计语言)的创建线程,解决互斥访问临界资源问题
- spring-data-redis 关于订阅客户端不断创建新线程的问题
- gdb调试程序不能显示线程创建信息问题
- c#线程问题:线程间操作无效:从不是创建控件 的线程访问它InvalidOperationException异常
- 关于创建Excel表格问题(保存至指定文件/弹出直接打开还是下载,并可以选择保存路径的对话框)
- 关于 2003转到2005 线程间操作无效: 从不是创建控件“listView1”的线程访问它
- 关于mysql创建约束时遇到的问题。
- 关于JAVA的线程问题
- 关于创建Maven项目jsp报错问题
- 关于“automation服务器不能创建对象”的问题的解决方案大全
- 关于单例模式线程安全问题
- 关于界面刷新,一定要在主线程哦,要不会乱出一些问题
- 关于plsql下提示ORA-00904:Invalid identifier错误的问题----创建表时字段加了引号
- 基于jquery的关于动态创建DOM元素的问题
- 关于启用sessionState外部存储,导致IHttpAsyncHandler长连接阻塞线程的问题