您的位置:首页 > 编程语言 > C语言/C++

明晰C++内存分配的五种方法的区别

2009-12-03 13:40 337 查看
  我们在共享我们的数据的时候必需要考虑到安全的成绩。 希望大家有所后收获。   我们可以在计算机上运转各种计算机软件程序。 每一个运转的程序可能包括多个独立运转的线程(Thread)。 线程有可能和其他线程共享一些资源, 数据库等。   当多个Java线程同步锁同时读写同一份共享资源的时候, 可能会惹起抵触。 这时候, 我们需求引入线程“同步”机制, 不能一窝蜂挤上去抢作一团。   同步这个词是从英文synchronize(使同时发生)翻译过来的。 我也不明白为什么要用这个很容易惹起曲解的词。 我们也就只好这么将就。 其实是“排队”:几个线程之间要排队, 一个一个对共享资源进行操作, 而不是同时进行操作。 需求牢牢记住的第一点是:线程同步就是线程排队。 同步就是排队。 线程同步的目的就是避免线程“同步”执行。   关于线程同步, 需求牢牢记住的第二点是“共享”这两个字。 只要共享资源的读写访问才需求同步。 需求牢牢记住的第三点是, 这样的情况下, 线程之间就需求同步。   关于线程同步, 只需这些线程的代码访问同一份可变的共享资源, 这些线程之间就需求同步。 上面举几个例子。   有两个推销员, 写报告。 他们可能买到异样种类的样品, 他们之间没有任何共享资源。 所以, 他们可以各自进行自己的任务,   这两个推销员就相当于两个Java线程同步锁;两个推销员遵循相同的任务步骤,   上面给这两个推销员添加一个任务步骤。 推销员需求根据公司的“公告栏”上面发布的信息, 安排自己的任务计划。 这一点成绩都没有。 这两个推销员谁都不会去修改公告栏上写的信息。   上面添加一个角色。 一个办公室行政人员这个时候, 也走到了公告栏前面, 预备修改公告栏上的信息。 两个推销员这个时候, 这两个推销员就必须等待行政人员完成修改之后, 才能观看修改后的信息。   如果行政人员抵达的时候, 两个推销员已经在观看公告栏了。 那么行政人员需求等待两个推销员把以后信息记录下来之后, 才可以写上新的信息。   上述这两种情况, 因为其中一个线程(行政人员)修改了共享资源(公告栏)。 而且我们可以看到, 行政人员的任务流程和推销员的任务流程(执行代码)完全不同, 所以他们之间需求同步。   线程同步的基本完成思路还是比较容易理解的。 我们可以给共享资源加一把锁, 这把锁只要一把钥匙。   生活中, 每个储物箱都有一把锁, 一把钥匙。 人们可以运用那些带有钥匙的储物箱, 把储物箱锁上, 然后把钥匙拿走。 该储物箱就被锁住了, 真实的储物箱钥匙是可以被人拿走复制的, 所以不要把贵重物品放在超市的储物箱里面。 于是很多超市都采用了电子密码锁。 还有一个严峻的成绩没有处理, 这个同步锁应该加在哪里?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: