跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
最近更改
随机页面
MediaWiki帮助
代码酷
搜索
搜索
中文(中国大陆)
外观
创建账号
登录
个人工具
创建账号
登录
未登录编辑者的页面
了解详情
贡献
讨论
编辑“︁
C 语言线程创建
”︁(章节)
页面
讨论
大陆简体
阅读
编辑
编辑源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
编辑
编辑源代码
查看历史
常规
链入页面
相关更改
特殊页面
页面信息
外观
移至侧栏
隐藏
您的更改会在有权核准的用户核准后向读者展示。
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
== C语言中的线程创建 == 在C语言中,可以使用POSIX线程库(pthread)来创建和管理线程。pthread库提供了一系列的函数来操作线程,其中最基础的是`pthread_create`函数。 === pthread_create函数 === `pthread_create`函数的原型如下: <syntaxhighlight lang="c"> int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg); </syntaxhighlight> * `thread`:指向线程标识符的指针。 * `attr`:用于设置线程属性,通常为`NULL`表示使用默认属性。 * `start_routine`:线程函数的入口地址。 * `arg`:传递给线程函数的参数。 === 示例代码 === 以下是一个简单的线程创建示例: <syntaxhighlight lang="c"> #include <stdio.h> #include <pthread.h> void *print_message(void *ptr) { char *message = (char *)ptr; printf("%s\n", message); return NULL; } int main() { pthread_t thread1, thread2; char *message1 = "Thread 1"; char *message2 = "Thread 2"; pthread_create(&thread1, NULL, print_message, (void *)message1); pthread_create(&thread2, NULL, print_message, (void *)message2); pthread_join(thread1, NULL); pthread_join(thread2, NULL); return 0; } </syntaxhighlight> === 输出 === <pre> Thread 1 Thread 2 </pre> 或者 <pre> Thread 2 Thread 1 </pre> 由于线程的执行顺序是不确定的,输出的顺序可能会有所不同。 === 代码解释 === 1. `print_message`函数是线程的入口函数,它接收一个`void *`类型的参数,并将其转换为`char *`类型后打印。 2. `pthread_create`函数创建了两个线程,分别执行`print_message`函数,并传递不同的消息。 3. `pthread_join`函数用于等待线程结束,确保主线程在所有子线程完成后才退出。
摘要:
请注意,所有对代码酷的贡献均被视为依照知识共享署名-非商业性使用-相同方式共享发表(详情请见
代码酷:著作权
)。如果您不希望您的文字作品被随意编辑和分发传播,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)