[m-rev.] for review: thread safe mutables (part 2)
Julien Fischer
juliensf at csse.unimelb.edu.au
Wed Sep 13 16:28:15 AEST 2006
On Wed, 13 Sep 2006, Peter Wang wrote:
> On 2006-08-29, Julien Fischer <juliensf at csse.unimelb.edu.au> wrote:
>>
>> Estimated hours taken: 12
>> Branches: main
>>
>> Make the get and set operations for non-constant mutables thread safe. (The
>> get operation for constant mutables is thread safe by definition.) The
>> source-to-source transformation for (non-constant) mutables is modified as
>> follows: we introduce four primitive operations: unsafe_get, unsafe_set,
>> lock and unlock.
>
> I think there's a problem with this. This code no longer compiles:
>
> :- mutable(localsupp, random.supply, random_init(0), mostly_unique,
> [attach_to_io_state, untrailed]).
>
> (the important part is the mostly_unique inst)
>
> rand.m:022: In clause for `set_localsupp(in(mostly_unique))':
> rand.m:022: in argument 1 of call to predicate `rand.unsafe_set_localsupp'/1:
> rand.m:022: unique-mode error: the called procedure would clobber its
> rand.m:022: argument, but variable `X' is still live.
> rand.m:022: The goal could not be reordered, because it was impure.
> rand.m:022: In clause for `set_localsupp(in(mostly_unique), di, uo)':
> rand.m:022: in argument 1 of call to predicate `rand.unsafe_set_localsupp'/1:
> rand.m:022: unique-mode error: the called procedure would clobber its
> rand.m:022: argument, but variable `X' is still live.
> rand.m:022: The goal could not be reordered, because it was impure.
>
I'll take a look at it.
Julien.
--------------------------------------------------------------------------
mercury-reviews mailing list
Post messages to: mercury-reviews at csse.unimelb.edu.au
Administrative Queries: owner-mercury-reviews at csse.unimelb.edu.au
Subscriptions: mercury-reviews-request at csse.unimelb.edu.au
--------------------------------------------------------------------------
More information about the reviews
mailing list