1460772089-b7f539ec-252b-4fdf-9ba0-5d72b67e7ac5

1. A razor blade cartridge comprising:
a housing; and
at least one canted razor blade supported by or formed within the housing.
2. The cartridge of claim 1, wherein
the housing comprises a top curved portion, a flat section, and a bottom curved portion formed by bending a metal piece; and
the at least one canted razor blade is formed in the housing by cutting two or more slotted openings in linear parallel alignment in a longitudinal direction of a center section of the metal piece such that at least one razor blade having a first and a second sharpened cutting edge is formed between each set of slotted openings,
wherein the slotted openings and the at least one razor blade are canted with respect to a longitudinal axis of the metal piece.
3. The cartridge of claim 2 wherein the slotted openings and the at least one razor blade are canted at an angle that is greater than 45 degrees with respect to the longitudinal axis of the metal piece.
4. The cartridge of claim 3, wherein the slotted openings and the at least one razor blade are canted at an angle of between about 70 and 89 degrees with respect to the longitudinal axis of the metal piece.
5. The cartridge of claim 2, further comprising a plurality of razor blades canted with respect to the longitudinal axis of the metal piece,
wherein the plurality of canted razor blades area aligned to overlap such that a vertical line running downward from a highest point of a cutting edge of one razor blade overlaps a lower point of a cutting edge of an adjacent razor blade.
6. The cartridge of claim 2 wherein the sharpened cutting edges are hollow-ground sharpened or tapered.
7. The cartridge of claim 2 wherein the sharpened cutting edges of the at least one razor blade are tilted outward by not more than 1 degree or not more than a thickness of the razor blade so that when brought in contact with a surface to be shaved, the cutting edges of the razor blade contacts the surface before any other portion of the housing.
8. The cartridge of claim 2 further comprising one or more trimming blocks having a blade running parallel to the longitudinal axis of the cartridge for trimming longer hair such as sideburns of a user.
9. The cartridge of claim 8 wherein the trimming block is brought into contact with a surface to be shaved by placing the top or bottom curved portion of the metal piece on a surface and rotating the cartridge toward the surface to be shaved thereby bringing the blade of the trimming block in contact with the surface to be shaved.
10. A razor and cartridge having one or more canted razor blades comprising:
a cartridge having:
a metal piece bent to form a housing having a curved top portion, a flat section, and a curved bottom portion; and
two or more slotted openings cut in linear parallel alignment in a longitudinal direction of a center section of the metal piece and having a sharpened edge such that a razor blade having a first and a second sharpened cutting edge is formed between each set of slotted openings,
wherein the slotted openings are canted with respect to the longitudinal axis of the metal piece thereby forming one or more canted razor blades;

an encasement support which is received within a cavity formed by the curved top and curved bottom portions of the metal piece of the cartridge such that the cartridge surrounds and is supported by the encasement support; and
a handle extending from the encasement support allowing a user to hold and guide the razor while in use.
11. The razor of claim 10 further comprising an axle located between the encasement support and the handle for allowing the cartridge to pivot during shaving.
12. The razor of claim 10 wherein the cartridge is removable from the encasement support.
13. The razor of claim 12 wherein the cartridge is capable of being rotated 180 degrees and reinserted to the encasement support in an upside down orientation so that, in use, the second sharpened cutting edge of the razor blade is used for shaving.
14. A cartridge for a razor for holding one or more razor blades in a canted orientation comprising:
a frame having a front face, a rear face, a top end, and a bottom end, and a sunken structure formed within the front face; and
one or more sets of locating notches on the front face of the frame located adjacent to the sunken structure, wherein each set of two notches is configured to hold the razor blade across the sunken structure in a canted position with respect to a longitudinal axis of the frame.
15. The cartridge of claim 14 wherein the one or more sets of locating notches are configured to hold the razor blade at an angle of between about 70 and 89 degrees with respect to the longitudinal axis of the cartridge.
16. The cartridge of claim 14 wherein the one or more sets of locating notches are configured to hold one or more razor blades in parallel and linear alignment forming equidistant spaces between the razor blades.
17. The cartridge of claim 16 wherein the equidistant spaces between the razor blades are wider than a width of the razor blades.
18. The cartridge of claim 14 wherein the one or more sets of locating notches are configured to hold the razor blades such that a cutting edge of the razor blade is bent upwards a maximum of one degree or a maximum equal to a thickness of the razor blade.
19. The cartridge of claim 14 further comprising one or more razor blades having a top end and a bottom end wherein the top end and bottom end of the razor blade are connected to corresponding locating notches of the frame.
20. The cartridge of claim 19 further comprising a cementing locking piece for holding in a sealing engagement of the one or more razor blades to the locating notches.

The claims below are in addition to those above.
All refrences to claim(s) which appear below refer to the numbering after this setence.

1. A computer-implemented method of synchronizing execution without synchronization primitives, comprising steps of:
providing, in code of a first component, a first blocking instruction that when executed, blocks until a first flag-setting instruction in code of a second component sets a first flag indicating that the second component has reached a ready state;
providing, in the code of the second component, the first flag-setting instruction that when executed, sets the first flag, thereby allowing the first blocking instruction to unblock;
providing, in the code of the second component, a second blocking instruction that when executed, blocks until a second flag-setting instruction in the code of the first component sets a second flag indicating that the first component reaches a finished state; and
providing, in the code of the first component, the second flag-setting instruction that when executed, sets the second flag, thereby allowing the second blocking instruction to unblock.
2. The method according to claim 1, wherein the first blocking instruction launches a modal dialog and waits until the modal dialog closes before the first component can check to see if the first flag is set.
3. The method according to claim 1, wherein the first blocking instruction is a native code instruction that yields control without rescheduling, after which the first component can check to see if the first flag is set.
4. The method according to claim 1, wherein the second blocking instruction sets a delay timer and waits until the timer expires before the second component continues checking to see if the second flag is set.
5. The method according to claim 1, wherein the first component makes its data available to the second component only after the second component has reached the ready state.
6. The method according to claim 5, wherein the data of the first component is made available from a document object model of the first component and is stored into a document object model of the second component.
7. The method according to claim 1, wherein the second component uses data made available from the first component only after the first component has reached the finished state.
8. The method according to claim 1, wherein the code of the first component and the code of the second component is scripting code.
9. The method according to claim 1, wherein neither the code of the first component nor the code of the second component supports synchronization primitives.
10. The method according to claim 1, wherein the first component is a first browser instance and the second component is a second browser instance.
11. A system for synchronizing execution without synchronization primitives, comprising:
means for executing, in code of a first component, a first blocking instruction that blocks until a first flag-setting instruction in code of a second component sets a first flag indicating that the second component has reached a ready state;
means for executing, in the code of the second component, the first flag-setting instruction that sets the first flag, thereby allowing the first blocking instruction to unblock;
means for executing, in the code of the second component, a second blocking instruction that blocks until a second flag-setting instruction in the code of the first component sets a second flag indicating that the first component reaches a finished state; and
means for executing, in the code of the first component, the second flag-setting instruction that sets the second flag, thereby allowing the second blocking instruction to unblock.
12. The system according to claim 11, wherein the first blocking instruction launches a modal dialog.
13. The system according to claim 11, wherein the second blocking instruction sets a delay timer.
14. The system according to claim 11, wherein the code of the first component uses the first flag to prevent the first component from making its data available to the second component before the second component reaches the ready state.
15. The system according to claim 11, wherein the code of the second component uses the second flag to prevent the second component from using data made available from the first component before the first component has reached the finished state.
16. The system according to claim 11, wherein the code of the first component and the code of the second component is scripting code that does not support synchronization primitives.
17. A computer program product for synchronizing execution without use of synchronization primitives, the computer program product comprising computer-readable code embodied on one or more computer-usable media, the computer-readable code comprising instructions that when executed on a computer cause the computer to:
execute, in code of a first component, a first blocking instruction that blocks until a first flag-setting instruction in code of a second component sets a first flag indicating that the second component has reached a ready state;
execute, in the code of the second component, the first flag-setting instruction that sets the first flag, thereby allowing the first blocking instruction to unblock;
execute, in the code of the second component, a second blocking instruction that blocks until a second flag-setting instruction in the code of the first component sets a second flag indicating that the first component reaches a finished state; and
execute, in the code of the first component, the second flag-setting instruction that sets the second flag, thereby allowing the second blocking instruction to unblock.
18. The computer program product according to claim 17, wherein the code of the first component and the code of the second component is scripting code.
19. The computer program product according to claim 17, wherein the first component is a first browser instance and the second component is a second browser instance and neither the code of the first component nor the code of the second component supports synchronization primitives.
20. The computer program product according to claim 17, wherein:
the first blocking instruction is provided in code that is invoked when the first component is terminating;
the first blocking instruction is implemented using native code that yields control without rescheduling; and
the second blocking instruction is provided in code of the second component that is rescheduled upon determining that the second flag-setting instruction has not yet set the second flag.