微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

boost :: thread函数执行

如何解决boost :: thread函数执行

| 我如何使用boost :: thread来执行一个函数,而每个线程都在其自己的内存空间中执行。这样,当我在函数中分配新变量时,它仅作为实例在执行线程中存在。 只是为了澄清一下,我想生成使用boost :: thread执行相同方法的线程,但是我不想使用锁或信号量,我只是希望它在单独的空间中执行。     

解决方法

您在线程函数内分配的所有内容对于该函数来说都是本地的,只要它们未声明为“ 0”即可。只需正常编写代码(避免使用
static
局部变量),就可以了。     ,如果您需要创建一个在其自身的地址空间内完全运行的线程,那么您要做的就是创建一个进程,而不是线程。根据定义,线程是在父进程的相同地址空间中运行的执行点。 如果您确实需要创建线程(即仍然有内存和线程之间共享的其他资源),但是还需要为特定线程分配一部分内存,那么您几乎没有选择: 1)根据ildjarn的建议,让线程过程分配本地(或动态内存)并编写代码,以便每个线程都使用为其分配的内存 2)看一下TLS(线程本地存储)。它是一个API,可让您创建专用于特定线程的\“ global \”变量。 C ++的某些变体还具有内置关键字,用于声明在后台使用TLS的变量。 请注意,在上述选项中,一个线程将无法破坏另一个线程的内存时,您不会获得自动隔离。获得这种隔离的唯一方法是派生多个进程(或切换到一种.NET语言并实例化在同一进程中运行的多个AppDomain)。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。