一个进程可以创建多个线程,其中一个为主线程,能否将进程等同于这个主线程?这些线程怎么样同步呢?
嗯,我只听说进程同步,没有听说过线程同步。
进程=主线程+辅助线程;
若多个线程处理同样的数据对象,当然需要同步。
---- 编 写 多 线 程 应 用 程 序 的 最 重 要 的 问 题 就 是 线 程 之 间 的 资 源 同 步 访 问。 因 为 多 个 线 程 在 共 享 资 源 时 如 果 发 生 访 问 冲 突 通 常 会 产 生 不 正 确 的 结 果。 例 如, 一 个 线 程 正 在 更 新 一 个 结 构 的 内 容 的 同 时 另 一 个 线 程 正 试 图 读 取 同 一 个 结 构。 结 果, 我 们 将 无 法 得 知 所 读 取 的 数 据 是 什 么 状 态: 旧 数 据, 新 数 据, 还 是 二 者 的 混 合 ?
从win32的角度来看,进程含有内存和资源,被进程拥有的内存,理论上可达到2GB.资源包括核心对象(如file handles和线程),USER资源(如对话框和字符串),GDI资源(如Device Context和brushes).
进程和内存并没有真正"做"什么事情.一旦CPU开始执行程序代码,你就有了一个"线程".
进程和线程在处理同一个对象时,都需要同步.
当在一个运行的程序(进程)内创建多个线程后,如果要对同一个对象操作,比如说串口等等,也需要同步.
进程就是进程,怎么可以等同于主线程呢。
进程和线程存在着根本的差异,你可以把进程看做线程的容器,进程是不活拨的,他拥有地址空间,而代码的执行主要是线程。线程可以在进程的地址空间内分配内存。
现成同步可以有很多方法,比如:信号量啊,临界资源等。
也可以用WaitForSingleObject或Sleep等。