C++ 什么是线
我一直在网上看什么是一个线程,我觉得我不明白它。有人能解释一下吗?在C++相关的编程语言方面,Objto-C会很好。 在objective-c中,我遇到了C++ 什么是线,c++,objective-c,multithreading,C++,Objective C,Multithreading,我一直在网上看什么是一个线程,我觉得我不明白它。有人能解释一下吗?在C++相关的编程语言方面,Objto-C会很好。 在objective-c中,我遇到了 @property(nonatomic, strong) NSString *name; 对非原子的解释是,它意味着不必担心多个线程试图同时访问对象,objective-c也不必合成线程安全的代码。那么,这到底意味着什么呢?一个进程可以由多个执行线程组成,从逻辑上讲,这些线程可以被认为是同时并行运行的。每个线程独立运行,但共享相同的内存和进
@property(nonatomic, strong) NSString *name;
对非原子的解释是,它意味着不必担心多个线程试图同时访问对象,objective-c也不必合成线程安全的代码。那么,这到底意味着什么呢?一个进程可以由多个执行线程组成,从逻辑上讲,这些线程可以被认为是同时并行运行的。每个线程独立运行,但共享相同的内存和进程状态。单个线程可以“做一件事”:执行计算、与网络交互、更新UI、解码视频等。但是,如果没有程序员的大量额外工作,单个线程无法同时完成所有这些任务。在一个进程中有多个线程使程序员能够轻松地使一个应用程序同时执行多个任务(多任务) 不过,使用多线程确实带来了一些新的挑战。例如,如果有两个线程访问同一个变量,则可能会出现并发风险,其中一个线程可能无法在另一个线程访问变量之前完全更新该变量,从而导致程序失败。Objective-C将默认生成线程安全代码,以避免这种情况
nonatomic
告诉编译器,您永远不会同时从多个线程访问它,因此编译器可以跳过线程安全代码,生成更快的代码。无论如何,如果您要提供自己的同步,这将非常有用(例如,保持一组属性同步,而Objective-C本身无法帮助您)
如果您违反了核心非原子
假设,同时从多个线程访问非原子
变量,所有的地狱都将破灭
对非原子的解释是,它意味着不必担心多个线程试图同时访问对象,objective-c不必合成线程安全代码。那么这到底意味着什么呢
想象你被要求在一张纸上写下你的名字。您收到了一份有人认为可以正常工作的指示列表:
- 您发现一行当前为空
- 把你的笔移到上面
- 写下你的名字
做出这样的保证非常有用,但代价高昂。这意味着线程之间必须进行通信和协调,商定“谁”将首先执行,其他线程将在必要时等待。只需说一些与进程中的其他线程同时运行的内容就足够了吗?代码一次执行一行(我相信您一定很熟悉)。当您使用多线程时,您将同时运行多行代码。例如,当您在后台下载文件时,用户可能正在滚动视图。现在,如果用户单击一个按钮,他们可能正在执行另一段代码。假设他们单击的按钮编辑的变量与下载函数当前编辑的变量相同。如果某些东西不是线程安全的,那么您将在这方面遇到问题。使用线程保存的东西,操作系统将优雅地处理它