Sponsored Content
Full Discussion: Atomicity
Top Forums Programming Atomicity Post 50813 by S.P.Prasad on Monday 3rd of May 2004 09:26:53 AM
Old 05-03-2004
First of all I would thank Driver for all the technical support and aid that he has provided.

Driver as you have stated that:

Quote:
lock(resources.semid);
if (data[1].used == 0 && data[2].used == 0) {
data[1].used = 1;
data[2].used = 1;
} else {
unlock(resources.semid);
/* Wait for 1 and 2 to become free */
}
unlock(resources.semid);
We have more than 10 process and in each process it has to LOCK or REL the LOCK for a specific array. One specific process cannot lock or release for more than one resource at a time. As per your pseudo-code then we need to have as many number of SEMAPHORES as there are number of arrays and LOCK / REL piece of code should be injected where locking and releasing of the resource comes into picture within the process. That would include a lot of re-work in the project. Will it be time efficient?

That is what I have posted the same in initial post.

Yes your pseudo-code would work fine if through out the processes we make a check that for a specific array the mapped SEMAPHORE key would lock or unlock the resource.

Thanks Driver, your solution is definitely a valuable one. I will build up a set of test executables implementing your pseudo-code.

Also please let me know if the pseudo-code I posted in my initial post is ok or not?

Thanks in advance.

Last edited by S.P.Prasad; 05-03-2004 at 10:34 AM..
 
Graphics::Primitive::Driver::Cairo(3pm) 		User Contributed Perl Documentation		   Graphics::Primitive::Driver::Cairo(3pm)

NAME
Graphics::Primitive::Driver::Cairo - Cairo backend for Graphics::Primitive VERSION
version 0.44 SYNOPSIS
use Graphics::Primitive::Component; use Graphics::Primitive::Driver::Cairo; my $driver = Graphics::Primitive::Driver::Cairo->new; my $container = Graphics::Primitive::Container->new( width => 800, height => 600 ); my $black = Graphics::Primitive::Color->new(red => 0, green => 0, blue => 0); $container->border->width(1); $container->border->color($black); $container->padding( Graphics::Primitive::Insets->new(top => 5, bottom => 5, left => 5, right => 5) ); my $comp = Graphics::Primitive::Component->new; $comp->background_color($black); $container->add_component($comp, 'c'); my $lm = Layout::Manager::Compass->new; $lm->do_layout($container); my $driver = Graphics::Primitive::Driver::Cairo->new( format => 'PDF' ); $driver->draw($container); $driver->write('/Users/gphat/foo.pdf'); DESCRIPTION
This module draws Graphics::Primitive objects using Cairo. IMPLEMENTATION DETAILS
Borders Borders are drawn clockwise starting with the top one. Since cairo can't do line-joins on different colored lines, each border overlaps those before it. This is not the way I'd like it to work, but i'm opting to fix this later. Consider yourself warned. ATTRIBUTES
antialias_mode Set/Get the antialias mode of this driver. Options are default, none, gray and subpixel. cairo This driver's Cairo::Context object format Get the format for this driver. surface Get/Set the surface on which this driver is operating. METHODS
data Get the data in a scalar for this driver. write ($file) Write this driver's data to the specified file. get_text_bounding_box ($font, $text, $angle) Returns two Rectangles that encloses the supplied text. The origin's x and y maybe negative, meaning that the glyphs in the text extending left of x or above y. The first rectangle is the bounding box required for a container that wants to contain the text. The second box is only useful if an optional angle is provided. This second rectangle is the bounding box of the un-rotated text that allows for a controlled rotation. If no angle is supplied then the two rectangles are actually the same object. If the optional angle is supplied the text will be rotated by the supplied amount in radians. get_textbox_layout ($tb) Returns a Graphics::Primitive::Driver::TextLayout for the supplied textbox. reset Reset the driver. draw Draws the specified component. Container's components are drawn recursively. ACKNOWLEDGEMENTS
Danny Luna AUTHOR
Cory G Watson <gphat@cpan.org> COPYRIGHT AND LICENSE
This software is copyright (c) 2011 by Cold Hard Code, LLC. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. perl v5.12.4 2011-09-27 Graphics::Primitive::Driver::Cairo(3pm)
All times are GMT -4. The time now is 06:57 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy