多线程02---pThread简介

article/2025/9/19 5:50:59

1.简介

pthread 是属于 POSIX 多线程开发框架。它是c语言提供的一个跨平台的多线程解决方案。由于其在iOS编程中,操作比较麻烦,一般不用,这里介绍仅仅作为了解。

2.pthread的使用

通过以下函数创建pthread,在C语言中类型的结尾通常 _t/Ref,而且不需要使用 *:

int pthread_create(pthread_t * __restrict, const pthread_attr_t * __restrict,void *(*)(void *), void * __restrict);

参数:

 1. pthread_t * __restrict 线程代号的地址2. onst pthread_attr_t * __restrict 线程的属性3. 调用函数的指针- void *(*)(void *)- 返回值 (函数指针)(参数)- void * 和 OC 中的 id 是等价的4. void * __restrict :传递给该函数的参数

返回值:

  • 如果是0,表示正确
  • 如果是非0,表示错误码

3.代码实战:

#import "ViewController.h"
#import <pthread.h>
@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad {[super viewDidLoad];NSString *str = @"MR";pthread_t thread;pthread_create(&thread, NULL, &demo, (__bridge void *)(str));
}void* demo(void* params)
{NSString *str = (__bridge NSString *)(params);for (int i = 0 ; i < 100; i++) {NSLog(@"%@",str);}return NULL;
}
@end

__bridge(桥接)

  1. 在 ARC 开发中,如果设计到和 C 语言中相同的数据类型进行转换时,需要使用 __bridge “桥接”
  2. 在 OC 中,如果是 ARC 开发,编译器会在编译的时候,自动根据代码结构,添加 retain, release, autorelease
  3. ARC 只负责 OC 部分的代码,不负责 C 的代码,如果 C 语言的框架出现 retain/create/copy 字样的函数,都需要release

运行结果
这里写图片描述


http://chatgpt.dhexx.cn/article/sZvWAwSt.shtml

相关文章

Qt 无法识别的外部符号.无法解析的外部符号

原因: 很多博客都说了这个原因,是因为后续在自己的类中,引入Q_OBJECT , 导致vs无法自动生成 moc_XXX.cpp类似的文件, 编译时候,找不到导致的(符号链接). 他人解决办法: 看了很多博客,说用moc_xx.exe, 重新生成对应的.h头文件,一下,就可以了;有的建议重新把类添加一下,然后清…

Qt项目 无法解析的外部符号_WinMainCRTStartup

1、无法解析的外部符号_WinMainCRTStartup 在编译Qt项目的时候突然说找不到_WinMainCRTStartup函数&#xff0c;_WinMainCRTStartup是Qt的主函数。找不到可能是main函数不在工程中。 选中main.cpp点击编译 点击移除再重新添加

QT无法解析的外部符号问题

moc_widget.obj:-1: error: LNK2019: 无法解析的外部符号 "private: void __thiscall Widget::on_pushButton_6_clicked(void)" (?on_pushButton_6_clickedWidgetAAEXXZ)&#xff0c;该符号在函数 "private: static void __cdecl Widget::qt_static_metacall(c…

QT疑难解决:无法解析的外部符号

无法解析的外部符号 _imp_XXXXXXXXX 出现字符_imp&#xff0c;说明不是真正的静态库&#xff0c;而是某个动态库的导入库&#xff0c;导入函数和自己不同名&#xff0c;所以加了字符_imp。 引入相应库 打开MSDN搜索函数xxxxx&#xff1a;http://msdn.microsoft.com/en-us/dn…

CUDA编程时遇到无法解析外部符号threadIdx或blockIdx问题的解决办法

在CUDA编程时遇到出现无法解析外部符号threadIdx或blockIdx问题的解决办法 在CUDA编程之前要确保工程项目的配置属性一致性如图一所示。然后点击项目—>属性确保配置属性无误。 VC 目录 可执行文件目录&#xff1a;…\NVIDIA GPU Computing Toolkit\CUDA\v10.2\bin 包含目…

LNK2019 无法解析的外部符号

LNK 2019 遇到了很多次这个错误&#xff0c;会持续更新遇到该错误产生的原因和解决方法 这个错误是由于我们调用的函数所定义的某个文件在编译时没有正确链接导致的&#xff0c;错误显示如下&#xff1a; 然后根据错误提示找到该函数 ImGui_ImplOpenGL3_Shutdown();ImGui_Impl…

无法解析的外部符号解决方法

步骤1&#xff1a; 按无法解析的顺序来解决问题 比如有两个无法解析&#xff0c;先解决第一个。 步骤2&#xff1a; 点击LNK2001,会跳转到网页&#xff0c;网页会提示哪些无法解析的问题是由哪个无法解析的错误引起的&#xff0c;这样可以减少解决无法解析的错误。 步骤3. …

无法解析的外部符号问题小结

问题1&#xff1a;在编写通信相关程序中&#xff0c;引用了一个静态库&#xff08;该静态库编译没有问题&#xff0c;并被其他项目引用&#xff09;&#xff0c;该库是对SOCKET的一个封装。基本结构如下&#xff1a; 在属性中添加了该库的引用后&#xff0c;编译仍然报错&#…

无法解析的外部符号main

今天在写程序的时候遇到个问题&#xff1a; 然后就去看了相应的解决方法 发现都不管用&#xff1a; 1.不是文件名.c或.cpp的问题 2.不是没有包含相应头文件的问题 3.不是写的控制台程序而使用的Windows连接程序&#xff08;Winmain&#xff09; 最后发现是因为在刚开始打开项…

无法解析的外部符号xxx 该符号在函数xxx中被引用

无法解析的外部符号xxx 该符号在函数xxx中被引用 更多相关错误可查看&#xff1a;https://blog.csdn.net/weixin_44120025/article/details/115279563 下面主要讲述一个解决方案中包含多个项目且它们之间互相引用的情况。 在一个解决方案已经有多个项目的情况下创建一个项目&am…

Visual Studio 2022配置GAMP出现 LNK2019无法解析外部符号_imp_timeGetTime@0

#vs2022配置GAMP 使用visual studio 2022配置软件GAMP的过程可以参考vs2019配置GAMP的详细过程。 在vs2022按照vs2019配置过程后&#xff0c;生成解决方案时&#xff0c;出现了LNK2019 无法解析的外部符号 _imp_timeGetTim0, 函数_tickget中引用了该符号。 解决方法如下&#…

跟着LearnOpenGLCN学习OpenGL配置GLAD环境时出现无法解析外部符号问题的解决

根据LearnOpenGLCN里的步骤&#xff1a; 1.将解压下来的glad和KHR直接复制到glfw-3.3.4.bin.WIN32的include里。 2.glad.c放到工程文件中去。 3.GLFW和GLAD配置环境 第一步&#xff1a; 第二步&#xff1a; 在配置环境后&#xff0c;运行调用窗口代码&#xff0c;出现以下错…

VS配置PCL“无法解析外部符号”

一开始报错&#xff1a; 一般原因是没有包括需要的 .lib 报错说明可能出现在vtk 和pcl_visualization 的lib上。在依赖库中添加pcl_visualization.lib 或者在.cmake文件中添加visualization重新编译&#xff0c;如下&#xff1a; 之后&#xff0c;报错只有两条&#xff1a; …

C++ error LNK2019无法解析外部符号

背景&#xff1a;用visual studio 2019开发MFC项目&#xff0c;第一次写c的项目&#xff0c;之前都是写c#和go的项目。 自定义一个类&#xff0c;引用自定义的类&#xff0c;具体的是引用.h文件&#xff0c;死活不成功&#xff0c;一直报error LNK2019无法解析外部符号这个错误…

VS在引用外库运行时显示无法解析外部符号

VS引用外库在运行时显示无法解析外部符号 问题截图 原因 链接器无法链接到 .lib&#xff0c;可以查看下图位置看库是否引入成功。 解决 检查库的配置是否正确。下面列出我在引用第三方库时的配置过程和注意事项。 使用cmake生成、vs编译生成的库&#xff0c;需要添加三个…

UE4使用UUserWidget无法解析外部符号

如图&#xff0c;明明vs代码没报错&#xff0c;但是编译的时候&#xff0c;总是提示&#xff1a; 那就说明&#xff0c;你的项目没有引入UMG模块&#xff1a; 找到这个文件&#xff0c;然后&#xff0c;在后面添加&#xff1a; 模块的介绍&#xff0c;网上一大堆&#xff0c;比…

vs+qt 动态库无法解析外部符号的问题

1、问题描述&#xff1a;无法解析的外部符号 解决方案&#xff1a;引用的库没有引用进来&#xff0c;结局方案如下&#xff1a; &#xff08;1&#xff09;先看一下生成的库输入位置在哪里。在动态库项目右击&#xff0c;选择“属性”->链接器->常规->输出文件。查看…

无法解析外部符号

本人在写qt工程的时候遇到无法解析外部符号 原因&#xff1a;只写了类声明&#xff0c;但还没有写实现类,造成调用时无法解析。 解决方法&#xff0c;把还没有实现类的声明给注释掉。 参考博客无法解析的外部符号 考虑可能的原因: [0]出现无法解析可能是因为lib文件不正确,…

“error LNK2019: 无法解析的外部符号”原因总结

C工程编译时出现如下链接错误提示&#xff1a; 原因一&#xff1a;缺少实现 只是在.h里面声明了某个方法&#xff0c;没有在cpp里面实现&#xff1b;我出现过这个问题&#xff1b; 类方法的实现未加类标识&#xff1a;如&#xff0c; “CTest::Connect(void) { … }” 写成了…

VS常见错误之一:LNK2019 : 无法解析的外部符号

问题样式&#xff1a; LNK2019 : 无法解析的外部符号 xxx 中被引用采用开源程序&#xff0c;忘记添加依赖项&#xff0c;这个是最常见的问题。解决办法如下&#xff1a; 右键打开项目属性 C/C、附加包含目录&#xff1a;填写附加头文件所在目录 分号间隔多项&#xff08;附加…