# Represents a queue of jobs package Foo; use strict; use warnings; use threads; use threads::shared; sub new { my $class = shift; my $self : shared; $self = &share({}); $self->{queue} = &share([]); bless $self, $class; lock($self->{queue}); return $self }