这是我从threads::shared
说明写着:Perl的共享变量原子性和可见性
默认情况下,变量是对每个线程专用,每个新创建的线程获取每个存在的变量的专用副本。此模块可让您在不同的线程共享变量... (more)
比方说,我有一个这样的共享变量:
my $var :shared;
$var = 10;
这意味着变量所有我创建的线程中仅存在一次。
现在关于原子性和可见性:
如果thread_A赋新值让我们说11:
$var = 11;
能够保证所有的thread_B(和所有我可能已经创建了其他线程)会看到值11? 而且是分配执行原子?
或者我们有没有像Java那样首先获得一个锁,然后完成任务并释放锁。只有使用相同锁的线程才能保证看到更新的值?
或者这就像Java中的volatile变量一样?