text:
List of California hurricanes
From Wikipedia, the free encyclopedia
Jump to navigation Jump to search
The remnants of Hurricane Nora over the southwestern United States
A California hurricane is a tropical cyclone that affects the state of California. Usually, only the remnants of tropical cyclones affect California. Since 1900, only two tropical storms have hit California, one by direct landfall from offshore, another after making landfall in Mexico.
Since 1850, only seven tropical cyclones have brought gale-force winds to the Southwestern United States. They are: The 1858 San Diego hurricane that was reconstructed as just missing landfall in 1858, the 1939 Long Beach tropical storm that made landfall near San Pedro in 1939, the remnants of Tropical Storm Jennifer-Katherine in 1963, the remnants of Hurricane Emily in 1965, the remnants of Hurricane Joanne in 1972, the remnants of Hurricane Kathleen in 1976, and Hurricane Nora in 1997, after it was downgraded to a tropical storm.
In most cases, rainfall is the only effect that these cyclones have on California. Sometimes, the rainfall is severe enough to cause flooding and damage. For example, floods from Hurricane Kathleen devastated Ocotillo, California and killed several people.
Contents
1 Explanation for rarity
2 List of tropical cyclones
2.1 Pre–1930
2.2 1930s
2.3 1940s
2.4 1950s
2.5 1960s
2.6 1970s
2.7 1980s
2.8 1990s
2.9 2000s
2.10 2010s
3 Climatological statistics
4 Deadliest storms
5 Modern repeats
5.1 Damage
5.2 Preparedness
6 See also
7 References
7.1 Citations
7.2 Bibliography
8 External links
Explanation for rarity[edit]
There are two reasons why tropical cyclones rarely strike California at tropical storm intensity or higher: sea surface temperatures, and the usual upper level steering winds in the eastern Pacific, with sea surface temperatures being more important.
Tropical cyclones usually require very warm water to depth, generally above 26.5 °C (80 °F) extending to a depth of 50 meters (160 ft).[1] However, the waters off California are cold even in summer. They rarely rise above 24 °C (75 °F) in near-shore southern California,[2] and usually remain below 17 °C (63 °F) along most of the rest of the coast and outer coastal waters, although El Niño events may warm the waters somewhat. This is due primarily to the extensive upwelling of colder sub-surface waters caused by the prevailing northwesterly winds acting through the Ekman Effect. The winds drive surface water to the right of the wind flow, that is offshore, which draws water up from below to replace it. The upwelling further cools the already cool California Current which runs north to south along coastal California and even much of coastal Baja California. This is the same mechanism which produces coastal California's characteristic fog.
The second reason is the general path of tropical cyclones in the eastern Pacific. They generally move north-westward or westward due to steering by the prevailing upper level winds, which takes them far out to sea and away from land.[2]
These factors make eastern Pacific landfalls improbable north of about central Baja California. In those instances when upper level steering winds do allow a more northerly path, much cooler sea surface temperatures quickly weaken tropical cyclones that approach California, although torrential rainfall can still occur. For example, the September 24-hour rainfall record for Los Angeles is held by the 1939 Long Beach Tropical Storm, as of January 2007.[3]
List of tropical cyclones[edit]
Hurricanes that affect California are mainly the remnants of hurricanes or tropical storms. In the twentieth century, only four eastern Pacific tropical cyclones have brought tropical storm-force winds to the Continental United States: the 1939 Long Beach Tropical Storm, Tropical Storm Joanne in 1972, Tropical Storm Kathleen in 1976, and Tropical Storm Nora in 1997.[4]
Pre–1930[edit]
After October 1854: A system considered to be a tropical cyclone made landfall over northern California, just north of the Golden Gate.[5]
October 2, 1858: The 1858 San Diego hurricane passed very close to Southern California. It brought several hours of hurricane and gale-force winds to an area stretching from San Diego to Los Angeles. This storm was reconstructed as just missing making landfall, dissipating offshore.[4]
Sometime before October 14, 1858: Since this tropical cyclone is reported in a newspaper as being only "one of the most terrific and violent hurricanes ever noted", the report may imply the existence of an earlier hurricane in southern California.[4] Other than occurring before the newspaper account was published (October 18, 1858), everything else about this "hurricane", including whether it even existed, is unknown.[4]
Before June or after October 1859: A system considered to be a tropical cyclone made landfall between Cape Mendocino and San Francisco Bay.[5]
August 11–12, 1873: Rain from a tropical storm fell on San Diego. The rain on August 12 set a record for wettest August day.[6]
July 20–21, 1902: The remnants of a hurricane brought rain to southern California.[7]
August 18–19, 1906: A tropical cyclone moved northward from the Gulf of California, and brought rain to southern California.[7]
September 15, 1910: The remnants of a hurricane brought rain to Santa Barbara County.[7]
August 26, 1915: The remnants of a tropical cyclone brought around an inch of rain to Riverside.[7]
September 11–12, 1918: The remnants of a tropical cyclone produced six inches (150 mm) of rain to the mountains of southern California.[7]
August 20–21, 1921: A tropical cyclone moved north from Baja California and into Arizona, producing rain in both southern California and Arizona.[7]
September 30, 1921: The remnants of a tropical cyclone moved northward from Baja California, and brought rain to Arizona and parts of California.[7]
September 18, 1929: A tropical cyclone in the Pacific Ocean dropped rain over southern California.[7]
1930s[edit]
September 28–October 1, 1932: The remnants of a hurricane brought four days of rain. Flash floods killed 15 people.[7]
August 25, 1935: A tropical cyclone moved northward from the south, and brought rain to southern California and parts of Arizona.[7]
August 9, 1936: A hurricane's remnants moved north and brought heavy rains to the Los Angeles area.[7]
September 4–7, 1939: The remnants of a hurricane brought over a year's worth of rain to parts of southern California.[7]
September 11–12, 1939: The remnants of a hurricane from the Gulf of California brought rain to parts of California.[7]
September 19–21, 1939: The remnants of a tropical cyclone brought rain to California.[7]
September 25, 1939: The 1939 California tropical storm made landfall near Long Beach.[7] Winds were near 80 km/h (50 mph) and rain was near 12 inches (300 mm). At sea, 48 people were killed. On land, 45 were killed in flooding, although these deaths may be partially attributable to a nasty thunderstorm immediately preceding the tropical storm.[3] This is the only known landfall in California by a tropical cyclone at tropical storm strength, during the twentieth century.[7]
1940s[edit]
September 1941: Moisture from a hurricane brought rain to California.[7]
September 9–10, 1945: The remnants of a tropical cyclone moved northward and brought rain to southern California.[7]
September 30–October 1, 1946: The remnants of a tropical storm brought several inches of rain to California.[7]
1950s[edit]
August 27–29, 1951: The remnants of a tropical cyclone brought enough rain to wash out some roads in southern California.[7]
September 19–21, 1952: The remnants of a hurricane brought rain to mountains in southern California.[7]
July 17–19, 1954: The remnants of a hurricane moved into Arizona, bringing rain to the state and parts of California.[7]
October 1–6, 1958: The remnants of a hurricane moved into Arizona, causing heavy rain in that state and in parts of California.[7]
September 11, 1959: The remnants of a hurricane generated some rain over California.[7]
1960s[edit]
September 9–10, 1960: The remnants of Hurricane Estelle generated rain over California.[7]
September 17–19, 1963: Tropical Storm Jennifer-Katherine[8] dissipated over northern Baja California, and dropped several inches of rain over California.[7]
September 4–5, 1965: Hurricane Emily's remnants brought rainfall to California.[7]
1970s[edit]
Hurricane Heather on October 5, 1977
September 30–October 1, 1971: Atlantic Hurricane Irene crossed Central America and became Hurricane Olivia. Olivia eventually re-curved and made landfall in Baja California, with the remnants bringing rain to California.[7]
September 3, 1972: Tropical Depression Hyacinth made landfall in California[9] and produced rain in the area of Los Angeles.[7]
October 6, 1972: Hurricane Joanne made landfall in Mexico and managed to bring gale-force winds and rain to Arizona, as well as California.[7]
September 9–12, 1976: Hurricane Kathleen crossed the Baja California peninsula moved into California as a tropical storm. Yuma, Arizona reported sustained winds of 91 km/h (57 mph).[7] Rains from Kathleen caused catastrophic damage to Ocotillo, California and killed three[7] to six people.[10]
August 18–19, 1977: Hurricane Doreen denegerated into a remnant low off the coast of California.[7] The remnants moved inland and caused flooding and crop damage as 7.01 inches (178 mm) of rain fell on Yuma Valley, Arizona.[11]
October 6–7, 1977: Hurricane Heather's remnants moved into Arizona, bringing 8.30 inches (211 mm) of rain to Nogales, Arizona and up to 14 inches (360 mm) of rainfall to the adjacent mountains. The remnants also brought significant rainfall to southern California. This led to significant flooding in both states.[12]
September 5–6, 1978: Tropical Depression Norman made landfall in California.[13] Its remnants produced several inches of rain.[7]
1980s[edit]
June 29–30, 1980: Hurricane Celia's remnants produced a minor amount of rain over California.[7]
September 17–18, 1982: Remnants from Hurricane Norman generated rain over Arizona and southern California.[7]
September 24–26, 1982: The remnants of Hurricane Olivia produced over 7 inches (177 mm) of rain in California.[7]
September 20–21, 1983: The remnants of Hurricane Manuel produced rain in California.[7]
October 7, 1983: The very weak remnants of Hurricane Priscilla caused showers in Southern California.[7]
September 10–11, 1984: Hurricane Marie's weak remnants generated showers over Southern California.[7]
September 22–23, 1987: The remnants of Hurricane Norma generated thunderstorms over Southern California, which caused some flooding.[14]
October 5–12, 1987: Weather associated with Hurricane Ramon caused moderate to heavy rain in southern California. The highest amount noted was 2.14 inches (54 mm) at Camp Pendleton.[14]
September 1989: Hurricane Octave's remnants brought rain to California, doing minimal damage.[15]
1990s[edit]
Hurricane Linda on September 12, 1997
June 1990: The remnants of Hurricane Boris briefly caused heavy rainfall in Southern California. This was one of the reasons why it was the wettest June in San Diego, since record-keeping began in 1850.[16] Despite this, less than an inch (25 mm) of rain fell in most locations.[17]
July 1992: The remnants of Hurricane Darby caused cloudiness in California. These clouds were also enough to delay the landing of the Space Shuttle Columbia for a day, and cause it to land in Florida instead of California.[18]
August 1992: Hurricane Lester's remnants caused rain in extreme Southern California.[19]
August 5, 1997: Surf from Hurricane Guillermo caused rip currents near Corona Del Mar, and a place just north of Huntington Beach, injuring three people and killing one.[20]
August 19–20, 1997: Tropical Storm Ignacio's remnants produced gusty winds over the outer waters of California, and passed directly over the San Francisco Bay Area, before moving across the interior of the Pacific Northwest. Sporadic moderate to heavy rainfall was recorded in both California and the states of the Pacific Northwest.[21]
September 13–14, 1997: Hurricane Linda was at one point forecast to make landfall in Southern California.[22] Instead, it moved out to sea, although large waves caused by Linda did wash five people off a jetty in Newport Beach.[22] Also, Linda's outer rainbands generated thunderstorms over southern California, causing flash floods in some regions.
September 25–26, 1997: After making landfall in Baja California, Hurricane Nora maintained tropical storm status into California and Arizona. Moderate to heavy rains fell across southeast California and Arizona, with a new 24-hour maximum for Arizona (305 mm (12 inches) falling in the Mogollon Rim). Damage totaled several hundred million, including $40 million (1997 USD) to lemon trees. There were a few indirect deaths caused by the hurricane.[23]
2000s[edit]
September 2000: The remnants of Hurricane Lane triggered thunderstorms across California.[24]
September 2001: Remnant moisture from Hurricane Flossie caused thunderstorms, lightning, and floods in Southern California. Lightning struck four people, killing two of them.[25]
September 30, 2001: Thunderstorms from the remnants of Hurricane Juliette caused minor damage to California[26] and brought rain of less than an inch (25 mm) to the area.[11]
August 2003: Remnants of Hurricane Ignacio produced powerful thunderstorms in southern California.
September 2003: Remnants of Hurricane Marty dropped large amounts of rainfall, in the southwestern United States, especially in Southern California and southwestern Arizona.
July 2006: Remnants of Tropical Storm Emilia caused unsettled weather across the southwestern United States. Rain from the remnants helped to extinguish the Horse Fire in southern California.[27]
September 2006: Remnants of Hurricane John triggered flash flood watches.[28]
August 26–27, 2007: Remnants of Hurricane Dean made landfall in Santa Barbara area, triggering heavy rains and minor flooding throughout the southern California Area. Early on August 27, the storm eventually reached Las Vegas, Nevada, and caused flash flooding there as well, before dissipating there later in the day.
August 25, 2008: Remnants of Tropical Storm Julio reached the Apple Valley, California, and Las Vegas, Nevada.
August 27–29, 2009: Remnants of Tropical Storm Ignacio triggered heavy rains across northern and central California.
September 4, 2009: Remnants of Hurricane Jimena caused severe thunderstorms to break out in eastern San Diego County, California, causing flash floods, and a short blackout that lasted for only a few hours.
October 11–15, 2009: The remnants of Typhoon Melor affected California and broke several rainfall records. The storm system also opened up a Pineapple Express, an atmospheric river originating near Hawaii.
2010s[edit]
Hurricane Odile on September 14, 2014
July 18–20, 2012: Associated moisture and clouds from the remnants of Hurricane Fabio generated scattered showers and isolated thunderstorms across the Los Angeles Basin.[29]
September 5–7, 2012: Moisture from the remnants of Tropical Storm John brought scattered showers and thunderstorms to California.[30]
August 25–26, 2013: Moisture from the remnants of Tropical Storm Ivo caused some thunderstorms and flooding in southern California.[31]
September 3, 2013: Moisture from the remnants of Hurricane Kiko fueled the monsoon across the Southwestern United States, producing scattered showers and thunderstorms across the region.[32]
August 26–29, 2014: Large swells from Hurricane Marie caused high waves and rip currents.[33]
September 8, 2014: The remnants of Hurricane Norbert caused thunderstorms and flooding in Southern California.[34]
September 16–17, 2014: Hurricane Odile's outer rainbands brought thunderstorms to parts of Southern California, as a tropical storm. The remnants of Hurricane Odile also caused damage across central and eastern San Diego County on September 16, 2014, generating high winds and several uncharacteristically powerful thunderstorms in the region. Wind gusts over 20 knots reportedly uprooting trees, felled branches, cut power lines, crushed several cars, and flipped at least one airplane at Montgomery Field Airport.[35][36] Dry lightning generated by a line of severe thunderstorms in one of the rainbands set fire to a palm tree in San Diego[37] and storm force wind gusts within those severe thunderstorms left 6000 customers without power.[38]
October 6–7, 2014: Hurricane Simon's outer rainbands bring scattered thunderstorms and flash floods to parts of Southern California as a tropical storm, and later as a tropical depression, with a brief rain shower in San Diego County on October 7.
June 9–10, 2015: A low pressure system containing the remnants of Hurricane Blanca brought showers to Southern California on June 9.[39] Some flooding was reported in Santa Barbara County. On June 10, the low pressure system moved north to the San Francisco Bay Area and brought scattered showers there as well. Many rainfall records were broken.[40]
July 18–20, 2015: The remnants of Hurricane Dolores brought scattered showers and thunderstorms throughout Southern California, breaking many rainfall records and causing flooding.[41][42] One such flash flood caused a bridge to collapse which shut down Interstate 10 between Indio and Blythe, effectively shutting off the primary Phoenix-to-Los-Angeles route.[43] The good news was that the rain helped firefighters contain the North Fire within 3 days.
August 6, 2015: Hurricane Guillermo interacted with a longwave trough in the subtropical jet to its northeast to spawn a rare dry-season atmospheric river,[44] which went on to send moisture toward the San Francisco Bay Area, bringing a rare lightning storm to that area that night. Since the storm was dry and hardly brought any rain, the NWS issued a Red Flag Warning for that area.[45]
September 8–15, 2015: The remnants of Hurricane Linda brought localized downpours from Santa Barbara to San Diego, California.[46] On September 15, Los Angeles received 2.39 inches of rain, making it one of the wettest September days since records dating back to 1877,[47] second only to 1939.
July 11–12, 2017: Dangerous rip currents from Hurricane Eugene combined with swells of 4 to 8 ft (1.2 to 2.4 m) across Southern California.[48]
September 3–4, 2017: Moisture from Tropical Storm Lidia's remnant low brought flash flooding and thunderstorms to Southern California. Lidia's remnants also triggered a microburst event in Santa Barbara.[49]
July 7–8, 2018: As a tropical storm, Hurricane Fabio brought rip currents to the coastline of California, and showers and humid conditions to Northern California.[50]
August 9–11, 2018: Hurricane John brought high surf to the coast of Southern California.[51]
October 1, 2018: Hurricane Rosa brought scattered thunderstorms to parts of Southern California as a tropical storm, triggering flash flood watches in San Diego County.[52]
October 12, 2018: The remnants of Hurricane Sergio spawned numerous thunderstorms in Southern California, as well as triggering a high surf advisory along the coast.
Climatological statistics[edit]
Most tropical cyclones impacting California do so in the month of September. September 1939 was "unprecedented" in having four tropical cyclones impact the state.[53]
Number of recorded storms affecting California, by month of year
Month
Number of storms
January
0
February
0
March
0
April
0
May
0
June
4
July
7
August
18
September
41
October
11
November
0
December
0
Number of recorded storms affecting California by decade
Period
Number of storms
Pre-1930
11
1930s
7
1940s
3
1950s
5
1960s
3
1970s
7
1980s
9
1990s
7
2000s
11
2010s
18
Deadliest storms[edit]
The following is a list of all known tropical cyclone-related deaths in California.
Name
Year
Number of deaths
Unnamed 1939 45–93
Unnamed 1932 15
Kathleen 1976 3–6
Nora 1997 3–4
Flossie 2001 2
Guillermo 1997 1
Modern repeats[edit]
While rare, tropical cyclones do affect California, occasionally very seriously as far as rainfall is concerned.
Damage[edit]
Map of warning breakpoints
A modern repeat of the 1858 storm is estimated to cause damages of hundreds of millions of dollars.[4] A repeat of the 1939 tropical storm would cause around 200 million dollars in damage.[4] The most serious damage would be due to rains rather than winds or storm surge, although distant hurricanes may still create heavy surf,[22] possibly injuring or killing people. Nora caused millions in damage and skirted extreme southeastern California.
Preparedness[edit]
When Hurricane Linda was forecast to make landfall, statements about its possible impact were issued by the Oxnard, California office of the National Weather Service. They stressed the uncertainty of a forecast that far in the future.
When Nora was threatening, "unprecedented coordination" was required between the NHC and several other agencies. The coordination was "smooth and effective".[23] However, no inland tropical storm warnings were issued for any area in the United States as Nora was approaching from the south.[23]
There are seven Pacific Coast breakpoints in the United States. They are, from north to south, Point Piedras Blancas, Point Sal, Point Conception, Point Mugu, the mouth of the San Gabriel River, San Mateo Point, and the mouth of the Tijuana River (although places outside this area can be selected if conditions warrant).[54] Should there be the threat of landfall, warnings or watches would be issued for those sections of the coast. It is highly unlikely that any tropical cyclone will threaten areas farther north, due to the stronger influence of the California Current.
See also[edit]
Tropical cyclones portal
List of tropical cyclones
List of Arizona hurricanes
List of Baja California Peninsula hurricanes
List of Pacific hurricane seasons
Tropical cyclone
References[edit]
Citations[edit]
Jump up ^ Christopher Landsea. "Subject: A16) Why do tropical cyclones require 80 °F (26.5 °C) ocean temperatures to form ?". Tropical Cyclone FAQ. National Hurricane Center. Retrieved 2007-12-25.
^ Jump up to: a b Christopher Landsea. "Subject: G8) Why do hurricanes hit the East coast of the U.S., but never the West coast?". Tropical Cyclone FAQ. National Hurricane Center. Retrieved 2007-12-25.
^ Jump up to: a b "A History of Significant Weather Events in Southern California" (PDF). National Weather Service Forecast Office San Diego. February 2010. p. 14. Retrieved 22 January 2016.
^ Jump up to: a b c d e f Christopher Landsea & Michael Chenoweth (November 2004). "The San Diego Hurricane of October 2, 1858" (PDF). Bulletin of the American Meteorological Society. American Meteorological Society. p. 1689. Retrieved 2007-12-26.
^ Jump up to: a b Stephen S. Visher (June 1922). "Tropical Cyclones in the Northeast Pacific, Between Hawaii and Mexico" (PDF). Monthly Weather Review. American Meteorological Society. p. 296. Retrieved 2007-12-26.
Jump up ^ "A History of Significant Weather Events in Southern California" (PDF). National Weather Service Forecast Office San Diego. February 2010. p. 4. Retrieved 16 January 2016.
^ Jump up to: a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an Jack Williams (2005-05-17). "California's Tropical Cyclones". USA Today. Retrieved 2007-12-26.
Jump up ^ "Tropical Storm Jen-Kath". Unisys. Archived from the original (GIF) on 2007-01-02. Retrieved 2007-12-29.
Jump up ^ "Hurricane HYACINTH". Archived from the original (GIF) on 2007-01-03. Retrieved 2007-12-26.
Jump up ^ "A History of Significant Weather Events in Southern California" (PDF). National Weather Service Forecast Office San Diego. February 2010. p. 31. Retrieved 16 January 2016.
^ Jump up to: a b Roth, David M. (October 18, 2017). "Tropical Cyclone Point Maxima". Tropical Cyclone Rainfall Data. United States Weather Prediction Center. Retrieved November 26, 2017.
Jump up ^ David Roth. "Hurricane Heather - October 5-8, 1977".
Jump up ^ "Hurricane NORMAN". Archived from the original (GIF) on 2007-01-02. Retrieved 2007-12-26.
^ Jump up to: a b "A History of Significant Weather Events in Southern California" (PDF). National Weather Service Forecast Office San Diego. February 2010. p. 37. Retrieved 16 January 2016.
Jump up ^ Gil Clark (1989-11-09). "Preliminary Report Hurricane Octave (file 2)" (GIF). National Hurricane Center. Retrieved 2007-12-26.
Jump up ^ Max Mayfield. "Preliminary Report Hurricane Boris 9 (file 2)" (GIF). Retrieved 2007-12-16.
Jump up ^ "Remains of Boris" (GIF). Hydrometeorological Prediction Center. Retrieved 2007-12-26.
Jump up ^ Max Mayfield (1992-08-09). "Preliminary Report Hurricane Darby (file 3)" (GIF). National Hurricane Center. Retrieved 2007-12-26.
Jump up ^ "Hurricane Lester" (GIF). Hydrometeorological Prediction Center. Retrieved 2007-12-26.
Jump up ^ "Event Record Details". National Climatic Data Center. Archived from the original on 2010-07-06. Retrieved 2007-12-26.
Jump up ^ "Remains of Ignacio". Hydrometeorological Prediction Center. Retrieved 2007-12-26.
^ Jump up to: a b c Max Mayfield (1997-10-25). "Preliminary Report Hurricane Linda". National Hurricane Center. Retrieved 2007-12-26.
^ Jump up to: a b c Edward Rappaport (1997-10-30). "Preliminary Report Hurricane Nora". National Hurricane Center. Archived from the original on 2005-09-25. Retrieved 2007-12-26.
Jump up ^ Cappella, Chris (2000). "Hurricane Lane brushes Mexican peninsula". USA Today. Archived from the original on April 20, 2011. Retrieved April 20, 2011.
Jump up ^ Stacy R. Stewart (2001-10-27). "Tropical Cyclone Report Hurricane Flossie". National Hurricane Center. Retrieved 2007-12-26.
Jump up ^ Miles B. Laswrence & Michelle Mainelli (2001-11-30). "Tropical Cyclone Report Hurricane Juliette". National Hurricane Center. Archived from the original on 2008-10-06. Retrieved 2007-12-26.
Jump up ^ San Diego Union Tribune (2006-07-30). "Horse fire declared fully contained". Archived from the original on 2012-09-19. Retrieved 2008-09-19.
Jump up ^ Wikisource:September 4, 2006 NWS San Diego Flash Flood Watch
Jump up ^ Robert J. Lopez (2012-07-18). "Hurricane Fabio remnants cause thunder across southern California". Los Angeles Times. Retrieved 2012-07-19.
Jump up ^ "Tropical storm's last gasp aids Calif. firefighters". 6 September 2012.
Jump up ^ "Thunderstorms pound S. Cal for second day". The San Diego Union-Tribune. 26 August 2013.
Jump up ^ "U.S. Drought Monitor Report for the Week Ending Sept. 3 (Text)". Bloomberg. September 6, 2013. Retrieved September 6, 2013.
Jump up ^ Gillian Flaccus (2014-08-28). "Day 3 of Big Waves Expected in Southern California". Associated Press. Retrieved August 28, 2013.
Jump up ^ "Norbert weakens to tropical storm off Mexico; causes flooding in Southern California". Associated Press. September 8, 2014. Retrieved September 8, 2014.
Jump up ^ "100-degree heat, thunderstorms turn San Diego suddenly into Florida - SanDiegoUnionTribune.com". The San Diego Union-Tribune. 16 September 2014.
Jump up ^ "Storm passed through San Diego, cleanup begins — with trees - SanDiegoUnionTribune.com". The San Diego Union-Tribune. 17 September 2014.
Jump up ^ "Kit Corry". Twitter.
Jump up ^ "Traffic Blocked, Thousands Lose Power in Surprise Storm". NBC 7 San Diego.
Jump up ^ Los Angeles Times (10 June 2015). "The rain wasn't much, but it broke records for June". latimes.com.
Jump up ^ "Rare June storm brings rain to the Bay Area". ABC7 San Francisco.
Jump up ^ Los Angeles Times (18 July 2015). "Rain, thunder and lightning pound L.A. area; flooding possible". latimes.com.
Jump up ^ Maureen Robertson. "Weather service issues flood advisory until 4:30 Sunday afternoon". Ramona Sentinel.
Jump up ^ JANET ZIMMERMAN and DEBRA GRUSZECKI (20 July 2015). "I-10 CLOSURE: Collapsed bridge received high marks in last inspection". Press Enterprise.
Jump up ^ http://www.weatherwest.com/wp-content/uploads/2015/08/wv.jpg
Jump up ^ "National Weather Service declares red flag warning for Bay Area; Cal Fire on alert". ABC7 San Francisco.
Jump up ^ "Moisture From Linda to Bring Rain to Southern California Early This Week". AccuWeather.
Jump up ^ Samenow, Jason (September 15, 2015). "Hurricane Linda's remnants drench Los Angeles with wettest September days in decades". The Washington Post. Retrieved September 25, 2015.
Jump up ^ Gary Robbins (July 10, 2017). "Hurricane Eugene will bring big waves to parts of Southern California coast". Los Angeles Times. Retrieved July 8, 2018.
Jump up ^ "Teen Severely Injured by Santa Barbara Microburst". Santa Barbara Independent. September 5, 2017. Retrieved September 7, 2017.
Jump up ^ Amy Graff (July 6, 2018). "Fading Hurricane Fabio delivers muggy weather and dangerous surf to Northern California". San Francisco Chronicle. Retrieved July 8, 2018.
Jump up ^ Alex Sosnowski (August 10, 2018). "Dangerous surf from John to affect Southern California beaches into this weekend". AccuWeather. Retrieved August 10, 2018.
Jump up ^ . San Diego Patch. October 1, 2018 https://patch.com/california/san-diego/hurricane-rosa-remnants-drop-rain-san-diego-region. Retrieved October 3, 2018. Missing or empty |title= (help)
Jump up ^ "A History of Significant Weather Events in Southern California" (PDF). National Weather Service Forecast Office San Diego. February 2010. pp. 13–14. Retrieved 16 January 2016.
Jump up ^ "Hurricane and Tropical Storm Watch/Warning Breakpoints". National Hurricane Center. 2012-07-22. Archived from the original on July 8, 2007. Retrieved 2012-07-22.
Bibliography[edit]
USA Today: California's tropical storms accessed September 29, 2005
NOAA Tropical Cyclone FAQ Subject G9 accessed September 29, 2005
The San Diego Hurricane of October 2, 1858 accessed September 29, 2005
Unisys East Pacific Tropical Storm Tracking by Year accessed September 29, 2005
NHC International Breakpoints table accessed August 31, 2009
External links[edit]
Unisys East Pacific Tropical Storm Tracking by Year
Tropical Cyclone Rainfall for the Western United States
NHC Tropical Cyclone Mexico Breakpoints Graphic
hide
v
t
e
List of United States hurricanes
By state
Arizona
California
Delaware
Florida
pre-1900
1900–49
1950–74
1975–99
2000–present
Hawaii
Louisiana
2000–present
Maryland
1950–present
New England
New Jersey
New Mexico
New York
North Carolina
pre-1900
1900–49
1950–79
1980–99
2000–present
Pennsylvania
Texas
pre-1900
1900–49
1950–79
1980–present
Retrieved from "https://en.wikipedia.org/w/index.php?title=List_of_California_hurricanes&oldid=864108409"
Categories:
Pacific hurricanes
Lists of tropical cyclones in the United States
California-related lists
Hurricanes in California
Hidden categories:
Pages with citations lacking titles
Pages with citations having bare URLs
Featured lists
Navigation menu
Personal tools
Not logged in
Talk
Contributions
Create account
Log in
Namespaces
Article
Talk
Variants
Views
Read
Edit
View history
More
Search
Navigation
Main page
Contents
Featured content
Current events
Random article
Donate to Wikipedia
Wikipedia store
Interaction
Help
About Wikipedia
Community portal
Recent changes
Contact page
Tools
What links here
Related changes
Upload file
Special pages
Permanent link
Page information
Wikidata item
Cite this page
Print/export
Create a book
Download as PDF
Printable version
Languages
Español
Simple English
Edit links
This page was last edited on 15 October 2018, at 04:19 (UTC).
Text is available under the Creative Commons Attribution-ShareAlike License; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.
Privacy policy
About Wikipedia
Disclaimers
Contact Wikipedia
Developers
Cookie statement
Mobile view
Enable previews

values: mw-page-base noprint

values: mw-head-base noprint

attrs: alt src width height srcset data-file-width data-file-height

values: This is a featured list. Click here for more information.

attrs: class id

values: firstHeading firstHeading en

values: siteSub noprint

attrs: class href

values: mw-jump-link #mw-head

values: mw-jump-link #p-search

value: b

value: p

values: checkbox button toctogglecheckbox toctogglecheckbox display:none

values:
/wiki/Sea_surface_temperatures
mw-redirect
Sea surface temperatures

values:
/wiki/Los_Angeles,_California
mw-redirect
Los Angeles, California

values:
/wiki/1939_Long_Beach_Tropical_Storm
mw-redirect
1939 Long Beach Tropical Storm

values:
/wiki/Continental_United_States
mw-redirect
Continental United States

values:
/wiki/San_Diego,_California
mw-redirect
San Diego, California

values:
/wiki/Santa_Barbara_County
mw-redirect
Santa Barbara County

values:
/wiki/Baja_California_peninsula
mw-redirect
Baja California peninsula

values:
/wiki/Corona_Del_Mar,_California
mw-redirect
Corona Del Mar, California

values:
/wiki/Las_Vegas,_Nevada
mw-redirect
Las Vegas, Nevada

values:
/wiki/Severe_thunderstorm
mw-redirect
Severe thunderstorm

values: October 2009 North American storm complex

values:
/wiki/San_Diego_County
mw-redirect
San Diego County

values:
/wiki/Montgomery_Field
mw-redirect
Montgomery Field

values:
/wiki/Dry_lightning
mw-redirect
Dry lightning

values:
/wiki/Red_Flag_Warning
mw-redirect
Red Flag Warning

values: position: absolute; background-color: rgb(206, 223, 242); width:0em; height: 1.25em; margin: 0 0 0 0; z-index: 0;

values: position: absolute; height:1.25em; width: 15em; padding: 0 0 0 2em; z-index: 10;

values: position: absolute; background-color: rgb(206, 223, 242); width:1.2em; height: 1.25em; margin: 0 0 0 0; z-index: 0;

values: position: absolute; background-color: rgb(206, 223, 242); width:2.1em; height: 1.25em; margin: 0 0 0 0; z-index: 0;

values: position: absolute; background-color: rgb(206, 223, 242); width:5.4em; height: 1.25em; margin: 0 0 0 0; z-index: 0;

values: position: absolute; background-color: rgb(206, 223, 242); width:12.3em; height: 1.25em; margin: 0 0 0 0; z-index: 0;

values: position: absolute; background-color: rgb(206, 223, 242); width:3.3em; height: 1.25em; margin: 0 0 0 0; z-index: 0;

values: border-style:solid; border-width:1px; border-color:#c0c0c0; background-color:#fdfdfd; text-align:left; float: none; margin-left: auto; margin-right: auto;

values: position: absolute; background-color: rgb(206, 223, 242); width:0.9em; height: 1.25em; margin: 0 0 0 0; z-index: 0;

values: position: absolute; background-color: rgb(206, 223, 242); width:1.5em; height: 1.25em; margin: 0 0 0 0; z-index: 0;

values: position: absolute; background-color: rgb(206, 223, 242); width:2.7em; height: 1.25em; margin: 0 0 0 0; z-index: 0;

values:
headerSort
0
columnheader button
Sort ascending

values:
wikitable sortable jquery-tablesorter
center

values: display:table-cell;padding:0.2em 0.2em 0.2em 0.3em;vertical-align:middle

values: margin:0.5em 0 0.5em 1em;border:solid #aaa 1px

values:
/wiki/List_of_Pacific_hurricane_seasons
mw-redirect
List of Pacific hurricane seasons

values:
nofollow
external text
http://www.nhc.noaa.gov/1997linda.html

values:
nofollow
external text
http://www.nhc.noaa.gov/1997nora.html

values: wikisource:September 4, 2006 NWS San Diego Flash Flood Watch

values:
nofollow
external text
http://www.nhc.noaa.gov/gifs/bp_mex.jpg

values: List of Florida hurricanes (2000–present)

values: List of Louisiana hurricanes (2000–present)

values: List of Maryland hurricanes (1950–present)

values: List of North Carolina hurricanes (pre-1900)

values: List of North Carolina hurricanes (1900–49)

values: List of North Carolina hurricanes (1950–79)

values: List of North Carolina hurricanes (1980–99)

values: List of North Carolina hurricanes (2000–present)

values: nowraplinks collapsible autocollapse navbox-inner mw-collapsible mw-made-collapsible

values: Category:Lists of tropical cyclones in the United States

values: Category:Pages with citations lacking titles

values: Category:Pages with citations having bare URLs

values: Discussion about edits from this IP address [ctrl-alt-n]

values: A list of edits made from this IP address [ctrl-alt-y]

values: You are encouraged to create an account and log in; however, it is not mandatory

values: You're encouraged to log in; however, it's not mandatory. [ctrl-alt-o]

values:
/wiki/List_of_California_hurricanes
View the content page [ctrl-alt-c]
c

values: Discussion about the content page [ctrl-alt-t]

values: p-namespaces navigation vectorTabs p-namespaces-label

values:
p-variants
navigation
vectorMenu emptyPortlet
p-variants-label

values: Past revisions of this page [ctrl-alt-h]

values: p-views navigation vectorTabs p-views-label

values:
p-cactions
navigation
vectorMenu emptyPortlet
p-cactions-label

values:
mw-wiki-logo
/wiki/Main_Page
Visit the main page

values:
/wiki/Main_Page
Visit the main page [ctrl-alt-z]
z

values: Featured content – the best of Wikipedia

values: Find background information on current events

values: List of hurricanes in California – Simple English

values: /static/images/wikimedia-button-1.5x.png 1.5x, /static/images/wikimedia-button-2x.png 2x

values: /static/images/poweredby_mediawiki_132x47.png 1.5x, /static/images/poweredby_mediawiki_176x62.png 2x

values:
suggestions
display: none; font-size: 13px;

values: mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-List_of_California_hurricanes rootpage-List_of_California_hurricanes skin-vector action-view


text:
Forbes' list of world's highest-paid athletes
From Wikipedia, the free encyclopedia
This is the latest accepted revision, reviewed on 26 September 2017.
Jump to: navigation, search
This is a list of the highest-paid athletes in the world as ranked by Forbes magazine.
Contents
[hide]
1 2017 list
2 2016 list
3 2015 list
4 2014 list
5 2013 list
6 2012 list
7 See also
8 References
9 External links
2017 list[edit]
The 2017 list:[1]
Rank
Name
Sport
Nation
Total
Salary/Winnings
Endorsements
1 Cristiano Ronaldo Football Portugal $93 million $58 million $35 million
2 LeBron James Basketball United States $86.2 million $31.2 million $55 million
3 Lionel Messi Football Argentina $80 million $53 million $27 million
4 Roger Federer Tennis Switzerland $64 million $6 million $58 million
5 Kevin Durant Basketball United States $60.6 million $26.6 million $34 million
6 Andrew Luck American football United States $50 million $47 million $3 million
6 Rory McIlroy Golf Northern Ireland $50 million $16 million $34 million
8 Stephen Curry Basketball United States $47.3 million $12.3 million $35 million
9 James Harden Basketball United States $46.6 million $26.6 million $20 million
10 Lewis Hamilton Auto racing England $46 million $38 million $8 million
2016 list[edit]
The 2016 list:[2]
Rank
Name
Sport
Nation
Total
Salary/Winnings
Endorsements
1 Cristiano Ronaldo Football Portugal $88 million $56 million $32 million
2 Lionel Messi Football Argentina $81.4 million $53.4 million $28 million
3 LeBron James Basketball United States $77.2 million $23.2 million $54 million
4 Roger Federer Tennis Switzerland $67.8 million $7.8 million $60 million
5 Kevin Durant Basketball United States $56.2 million $20.2 million $36 million
6 Novak Djokovic Tennis Serbia $55.8 million $21.8 million $34 million
7 Cam Newton American football United States $53.1 million $41.1 million $12 million
8 Phil Mickelson Golf United States $52.9 million $2.9 million $50 million
9 Jordan Spieth Golf United States $52.8 million $20.8 million $32 million
10 Kobe Bryant Basketball United States $50 million $25 million $25 million
2015 list[edit]
The 2015 list was released on 10 June 2015.[3]
Rank
Name
Sport
Nation
Total
Salary/Winnings
Endorsements
1 Floyd Mayweather Jr. Boxing United States $300 million $285 million $15 million
2 Manny Pacquiao Boxing Philippines $160 million $148 million $12 million
3 Cristiano Ronaldo Football Portugal $79.6 million $52.6 million $27 million
4 Lionel Messi Football Argentina $73.8 million $51.8 million $22 million
5 Roger Federer Tennis Switzerland $67 million $9 million $58 million
6 LeBron James Basketball United States $64.8 million $20.8 million $44 million
7 Kevin Durant Basketball United States $54.1 million $19.1 million $35 million
8 Phil Mickelson Golf United States $50.8 million $2.8 million $48 million
9 Tiger Woods Golf United States $50.6 million $0.6 million $50 million
10 Kobe Bryant Basketball United States $49.5 million $23.5 million $26 million
2014 list[edit]
The 2014 list was released on 11 June 2014.[4]
Rank
Name
Sport
Nation
Total
Salary/Winnings
Endorsements
1 Floyd Mayweather Jr. Boxing United States $105 million $105 million $0
2 Cristiano Ronaldo Football Portugal $80 million $52 million $28 million
3 LeBron James Basketball United States $72.3 million $19.3 million $53 million
4 Lionel Messi Football Argentina $64.7 million $41.7 million $23 million
5 Kobe Bryant Basketball United States $61.5 million $30.5 million $31 million
6 Tiger Woods Golf United States $61.2 million $6.2 million $55 million
7 Roger Federer Tennis Switzerland $56.2 million $4.2 million $52 million
8 Phil Mickelson Golf United States $53.2 million $5.2 million $48 million
9 Rafael Nadal Tennis Spain $44.5 million $14.5 million $30 million
10 Matt Ryan American football United States $43.8 million $42 million $1.8 million
2013 list[edit]
The 2013 list was released on 5 June 2013.[5]
Rank
Name
Sport
Nation
Total
Salary/Winnings
Endorsements
1 Tiger Woods Golf United States $78.1 million $13.1 million $65 million
2 Roger Federer Tennis Switzerland $71.5 million $6.5 million $65 million
3 Kobe Bryant Basketball United States $61.9 million $27.9 million $34 million
4 LeBron James Basketball United States $59.8 million $17.8 million $42 million
5 Drew Brees American football United States $51 million $40 million $11 million
6 Aaron Rodgers American football United States $49 million $43 million $6 million
7 Phil Mickelson Golf United States $48.7 million $4.7 million $44 million
8 David Beckham Football England $47.2 million $5.2 million $42 million
9 Cristiano Ronaldo Football Portugal $44 million $23 million $21 million
10 Lionel Messi Football Argentina $41.3 million $20.3 million $21 million
2012 list[edit]
The 2012 list was released on 18 June 2012.[6]
Rank
Name
Sport
Nationality
Total earnings
Salary/winnings
Endorsements
1 Floyd Mayweather Jr. Boxing United States $85 million $85 million $0
2 Manny Pacquiao Boxing Philippines $62 million $56 million $6 million
3 Tiger Woods Golf United States $59.4 million $4.4 million $55 million
4 LeBron James Basketball United States $53 million $13 million $40 million
5 Roger Federer Tennis Switzerland $52.7 million $7.7 million $45 million
6 Kobe Bryant Basketball United States $52.3 million $20.3 million $32 million
7 Phil Mickelson Golf United States $47.8 million $4.8 million $43 million
8 David Beckham Football England $46 million $9 million $37 million
9 Cristiano Ronaldo Football Portugal $42.5 million $20.5 million $22 million
10 Peyton Manning American football United States $42.4 million $32.4 million $10 million
See also[edit]
List of professional sports leagues by revenue
References[edit]
Jump up ^ "The World's Highest Paid Athletes 2017".
Jump up ^ "World's Highest Paid Athletes 2016". Forbes. Retrieved 30 January 2017.
Jump up ^ "Forbes Announces 2015 List Of The World's 100 Highest-Paid Athletes". Forbes. Retrieved 16 July 2016.
Jump up ^ "Floyd Mayweather Heads 2014 List Of The World's Highest-Paid Athletes". Forbes. Retrieved 16 July 2016.
Jump up ^ "The World's Highest-Paid Athletes 2013: Behind The Numbers". Forbes. Retrieved 16 July 2016.
Jump up ^ "Mayweather Tops List Of The World's 100 Highest-Paid Athletes". Forbes. Retrieved 16 July 2016.
External links[edit]
The World's Highest-Paid Athletes List - Forbes
[hide]
v
t
e
Forbes magazine lists
Companies
Global 2000
People
General
Celebrity 100
30 Under 30
China Celebrity 100
Fictional 15
Korea Power Celebrity
World's 100 Most Powerful Women
World's Most Powerful People
Richest
The World's Billionaires
Forbes 400
Forbes Asia Australia's 50 Richest
Places
America's Best Colleges
Sports
Highest-paid athletes
Most valuable sports teams
Most valuable football clubs
Technology
Midas List (Tech's Top Deal Makers)
Retrieved from "https://en.wikipedia.org/w/index.php?title=Forbes%27_list_of_world%27s_highest-paid_athletes&oldid=802457899"
Categories:
Forbes lists
Lists of people by magazine appearance
Lists of sports superlatives
Income of sportspeople
Hidden categories:
Wikipedia pending changes protected pages (level 1)
Navigation menu
Personal tools
Not logged in
Talk
Contributions
Create account
Log in
Namespaces
Article
Talk
Variants
Views
Read
Edit
View history
More
Search
Navigation
Main page
Contents
Featured content
Current events
Random article
Donate to Wikipedia
Wikipedia store
Interaction
Help
About Wikipedia
Community portal
Recent changes
Contact page
Tools
What links here
Related changes
Upload file
Special pages
Permanent link
Page information
Wikidata item
Cite this page
Print/export
Create a book
Download as PDF
Printable version
Languages
Español
日本語
Edit links
This page was last edited on 26 September 2017, at 07:41.
Text is available under the Creative Commons Attribution-ShareAlike License; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.
Privacy policy
About Wikipedia
Disclaimers
Contact Wikipedia
Developers
Cookie statement
Mobile view

key: html

type: local

value: div

attrs: id class

values: mw-page-base noprint

values: mw-head-base noprint

attrs: id class style

value: a

value: img

values: Page protected with pending changes level 1

attrs: href title

values: All edits by unregistered and new users are subject to review prior to becoming visible to unregistered users

value: i

attrs: id class lang

values: firstHeading firstHeading en

values: siteSub noprint

attrs: class src alt title

values: Changes must be reviewed before being displayed on this page.

attrs: id class src style alt

attrs: id style class

values: flaggedrevs_short flaggedrevs_stable_synced plainlinks noprint nomobile

values: jump-to-nav mw-jump

values:
col
headerSort
0
columnheader button
Sort ascending

attrs: alt src width height class srcset data-file-width data-file-height

values:
reflist mw-references-wrap
list-style-type: decimal;

values:
nofollow
external text
https://www.forbes.com/athletes/list

values: Forbes list of The World's 100 Most Powerful Women

values: Forbes list of The World's Most Powerful People

values: Forbes Magazine's List of America's Best Colleges

values: Forbes' list of the most valuable sports teams

values: Forbes' list of the most valuable football clubs

values: nowraplinks collapsible expanded navbox-inner

values: Category:Lists of people by magazine appearance

values: Category:Wikipedia pending changes protected pages (level 1)

values: Discussion about edits from this IP address [ctrl-alt-n]

values: A list of edits made from this IP address [ctrl-alt-y]

values: You are encouraged to create an account and log in; however, it is not mandatory

values: You're encouraged to log in; however, it's not mandatory. [ctrl-alt-o]

values:
/wiki/Special:Random
Load a random article [ctrl-alt-x]
x

values: portal navigation p-navigation p-navigation-label

values: Guidance on how to use and edit Wikipedia

values: About the project, what you can do, where to find things

values: A list of recent changes in the wiki [ctrl-alt-r]

values: portal navigation p-interaction p-interaction-label

values: List of all English Wikipedia pages containing links to this page [ctrl-alt-j]

values: Recent changes in pages linked from this page [ctrl-alt-k]

values:
/wiki/Wikipedia:File_Upload_Wizard
Upload files [ctrl-alt-u]
u

values: A list of all special pages [ctrl-alt-q]

values: Permanent link to this revision of the page

values: Link to connected data repository item [ctrl-alt-g]

values: Printable version of this page [ctrl-alt-p]

values:
uls-settings-trigger
Language settings
0
button
true

values: Anexo:Lista Forbes: Deportistas mejor pagados – Spanish

values: スポーツ選手長者番付 – Japanese

values: mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Forbes_list_of_world_s_highest-paid_athletes rootpage-Forbes_list_of_world_s_highest-paid_athletes skin-vector action-view


text:
Producer–consumer problem
From Wikipedia, the free encyclopedia
Jump to: navigation, search
This article includes a list of references, but its sources remain unclear because it has insufficient inline citations. Please help to improve this article by introducing more precise citations. (September 2014) (Learn how and when to remove this template message)
In computing, the producer–consumer problem[1][2] (also known as the bounded-buffer problem) is a classic example of a multi-process synchronization problem. The problem describes two processes, the producer and the consumer, who share a common, fixed-size buffer used as a queue. The producer's job is to generate data, put it into the buffer, and start again. At the same time, the consumer is consuming the data (i.e., removing it from the buffer), one piece at a time. The problem is to make sure that the producer won't try to add data into the buffer if it's full and that the consumer won't try to remove data from an empty buffer.
The solution for the producer is to either go to sleep or discard data if the buffer is full. The next time the consumer removes an item from the buffer, it notifies the producer, who starts to fill the buffer again. In the same way, the consumer can go to sleep if it finds the buffer to be empty. The next time the producer puts data into the buffer, it wakes up the sleeping consumer. The solution can be reached by means of inter-process communication, typically using semaphores. An inadequate solution could result in a deadlock where both processes are waiting to be awakened. The problem can also be generalized to have multiple producers and consumers.
Contents
[hide]
1 Inadequate implementation
2 Using semaphores
3 Using monitors
4 Without semaphores or monitors
5 See also
6 References
7 Further reading
Inadequate implementation[edit]
To solve the problem, some programmer might come up with a solution shown below. In the solution two library routines are used, sleep and wakeup. When sleep is called, the caller is blocked until another process wakes it up by using the wakeup routine. The global variable itemCount holds the number of items in the buffer.
int itemCount = 0; procedure producer() { while (true) { item = produceItem(); if (itemCount == BUFFER_SIZE) { sleep(); } putItemIntoBuffer(item); itemCount = itemCount + 1; if (itemCount == 1) { wakeup(consumer); } } } procedure consumer() { while (true) { if (itemCount == 0) { sleep(); } item = removeItemFromBuffer(); itemCount = itemCount - 1; if (itemCount == BUFFER_SIZE - 1) { wakeup(producer); } consumeItem(item); } }
The problem with this solution is that it contains a race condition that can lead to a deadlock. Consider the following scenario:
The consumer has just read the variable itemCount, noticed it's zero and is just about to move inside the if block.
Just before calling sleep, the consumer is interrupted and the producer is resumed.
The producer creates an item, puts it into the buffer, and increases itemCount.
Because the buffer was empty prior to the last addition, the producer tries to wake up the consumer.
Unfortunately the consumer wasn't yet sleeping, and the wakeup call is lost. When the consumer resumes, it goes to sleep and will never be awakened again. This is because the consumer is only awakened by the producer when itemCount is equal to 1.
The producer will loop until the buffer is full, after which it will also go to sleep.
Since both processes will sleep forever, we have run into a deadlock. This solution therefore is unsatisfactory.
An alternative analysis is that if the programming language does not define the semantics of concurrent accesses to shared variables (in this case itemCount) without use of synchronization, then the solution is unsatisfactory for that reason, without needing to explicitly demonstrate a race condition.
Using semaphores[edit]
Semaphores solve the problem of lost wakeup calls. In the solution below we use two semaphores, fillCount and emptyCount, to solve the problem. fillCount is the number of items already in the buffer and available to be read, while emptyCount is the number of available spaces in the buffer where items could be written. fillCount is incremented and emptyCount decremented when a new item is put into the buffer. If the producer tries to decrement emptyCount when its value is zero, the producer is put to sleep. The next time an item is consumed, emptyCount is incremented and the producer wakes up. The consumer works analogously.
semaphore fillCount = 0; // items produced semaphore emptyCount = BUFFER_SIZE; // remaining space procedure producer() { while (true) { item = produceItem(); down(emptyCount); putItemIntoBuffer(item); up(fillCount); } } procedure consumer() { while (true) { down(fillCount); item = removeItemFromBuffer(); up(emptyCount); consumeItem(item); } }
The solution above works fine when there is only one producer and consumer. With multiple producers sharing the same memory space for the item buffer, or multiple consumers sharing the same memory space, this solution contains a serious race condition that could result in two or more processes reading or writing into the same slot at the same time. To understand how this is possible, imagine how the procedure putItemIntoBuffer() can be implemented. It could contain two actions, one determining the next available slot and the other writing into it. If the procedure can be executed concurrently by multiple producers, then the following scenario is possible:
Two producers decrement emptyCount
One of the producers determines the next empty slot in the buffer
Second producer determines the next empty slot and gets the same result as the first producer
Both producers write into the same slot
To overcome this problem, we need a way to make sure that only one producer is executing putItemIntoBuffer() at a time. In other words, we need a way to execute a critical section with mutual exclusion. The solution for multiple producers and consumers is shown below.
mutex buffer_mutex; // similar to "semaphore buffer_mutex = 1", but different (see notes below) semaphore fillCount = 0; semaphore emptyCount = BUFFER_SIZE; procedure producer() { while (true) { item = produceItem(); down(emptyCount); down(buffer_mutex); putItemIntoBuffer(item); up(buffer_mutex); up(fillCount); } } procedure consumer() { while (true) { down(fillCount); down(buffer_mutex); item = removeItemFromBuffer(); up(buffer_mutex); up(emptyCount); consumeItem(item); } }
Notice that the order in which different semaphores are incremented or decremented is essential: changing the order might result in a deadlock. It is important to note here that though mutex seems to work as a semaphore with value of 1 (binary semaphore), but there is difference in the fact that mutex has ownership concept. Ownership means that mutex can only be "incremented" back (set to 1) by the same process that "decremented" it (set to 0), and all others tasks wait until mutex is available for decrement (effectively meaning that resource is available), which ensures mutual exclusivity and avoids deadlock. Thus using mutexes improperly can stall many processes when exclusive access is not required, but mutex is used instead of semaphore.
Using monitors[edit]
The following pseudo code shows a solution to the producer–consumer problem using monitors. Since mutual exclusion is implicit with monitors, no extra effort is necessary to protect the critical section. In other words, the solution shown below works with any number of producers and consumers without any modifications. It is also noteworthy that using monitors makes race conditions much less likely than when using semaphores.[citation needed][clarification needed (see Talk page)]
monitor ProducerConsumer { int itemCount = 0; condition full; condition empty; procedure add(item) { if (itemCount == BUFFER_SIZE) { wait(full); } putItemIntoBuffer(item); itemCount = itemCount + 1; if (itemCount == 1) { notify(empty); } } procedure remove() { if (itemCount == 0) { wait(empty); } item = removeItemFromBuffer(); itemCount = itemCount - 1; if (itemCount == BUFFER_SIZE - 1) { notify(full); } return item; } } procedure producer() { while (true) { item = produceItem(); ProducerConsumer.add(item); } } procedure consumer() { while (true) { item = ProducerConsumer.remove(); consumeItem(item); } }
Without semaphores or monitors[edit]
The producer–consumer problem, particularly in the case of a single producer and single consumer, strongly relates to implementing a FIFO or a channel. The producer–consumer pattern can provide highly efficient data communication without relying on semaphores, mutexes, or monitors for data transfer. Use of those primitives can give performance issues as they are expensive to implement. Channels and FIFOs are popular just because they avoid the need for end-to-end atomic synchronization. A basic example coded in C is shown below. Note that:
Atomic read-modify-write access to shared variables is avoided, as each of the two Count variables is updated only by a single thread. Also, these variables stay incremented all the time; the relation remains correct when their values wrap around on an integer overflow.
This example does not put threads to sleep, which may be acceptable depending on the system context. The schedulerYield() is there just to behave nicely and could be removed. Thread libraries typically require semaphores or condition variables to control the sleep/wakeup of threads. In a multi-processor environment, thread sleep/wakeup would occur much less frequently than passing of data tokens, so avoiding atomic operations on data passing is beneficial.
This example does not work for multiple producers and/or consumers because there is a race condition when checking the state. For example, if only one token is in the storage buffer and two consumers find the buffer non-empty, then both will consume the same token and possibly increase the count of consumed tokens over produced counter.
This example, as written, requires that UINT_MAX + 1 is evenly divisible by BUFFER_SIZE; if it is not evenly divisible, [Count % BUFFER_SIZE] produces the wrong buffer index after Count wraps past UINT_MAX back to zero. An alternate solution without this restriction would employ two additional Idx variables to track the current buffer index for the head (producer) and tail (consumer). These Idx variables would be used in place of [Count % BUFFER_SIZE], and each of them would have to be incremented at the same time as the respective Count variable is incremented, as follows: Idx = (Idx + 1) % BUFFER_SIZE.
volatile unsigned int produceCount = 0, consumeCount = 0; TokenType sharedBuffer[BUFFER_SIZE]; void producer(void) { while (1) { while (produceCount - consumeCount == BUFFER_SIZE) { schedulerYield(); /* sharedBuffer is full */ } /* Write to sharedBuffer _before_ incrementing produceCount */ sharedBuffer[produceCount % BUFFER_SIZE] = produceToken(); ++produceCount; } } void consumer(void) { while (1) { while (produceCount - consumeCount == 0) { schedulerYield(); /* sharedBuffer is empty */ } consumeToken(&sharedBuffer[consumeCount % BUFFER_SIZE]); ++consumeCount; } }
See also[edit]
Computer programming portal
Atomic operation
Design pattern
FIFO
Pipeline
Implementation in Java: Java Message Service
References[edit]
Jump up ^ Arpaci-Dusseau, Remzi H.; Arpaci-Dusseau, Andrea C. (2014), Operating Systems: Three Easy Pieces [Chapter: Condition Variables] (PDF), Arpaci-Dusseau Books
Jump up ^ Arpaci-Dusseau, Remzi H.; Arpaci-Dusseau, Andrea C. (2014), Operating Systems: Three Easy Pieces [Chapter: Semaphores] (PDF), Arpaci-Dusseau Books
Further reading[edit]
Mark Grand Patterns in Java, Volume 1, A Catalog of Reusable Design Patterns Illustrated with UML
C/C++ Users Journal (Dr.Dobb's) January 2004, "A C++ Producer-Consumer Concurrency Template Library", by Ted Yuan, is a ready-to-use C++ template library. The small template library source code and examples can be found here
[show]
v
t
e
Concurrent computing
General
Concurrency
Concurrency control
Process calculi
CSP
CCS
ACP
LOTOS
π-calculus
Ambient calculus
API-Calculus
PEPA
Join-calculus
Classic problems
ABA problem
Cigarette smokers problem
Deadlock
Dining philosophers problem
Producer–consumer problem
Race condition
Readers–writers problem
Sleeping barber problem
Category: Concurrent computing
[show]
v
t
e
Edsger Dijkstra
Publications
Structured Programming (book)
A Discipline of Programming (book)
A Method of Programming (book)
Predicate Calculus and Program Semantics (book)
Selected Writings on Computing: A Personal Perspective (book)
Selected papers
EWD manuscripts
Go To Statement Considered Harmful
On the Cruelty of Really Teaching Computer Science
Main research areas
Theoretical computing science
Software engineering
Systems science
Algorithm design
Concurrent computing
Distributed computing
Formal methods
Programming methodology
Programming language research
Program design and development
Software architecture
Scientific contributions
Concepts and methods
ALGOL 60 implementation
Call stack
Concurrency
Concurrent programming
Cooperating sequential processes
Critical section
Deadly embrace (deadlock)
Dining philosophers problem
Dutch national flag problem
Fault-tolerant system
Goto-less programming
Guarded Command Language
Layered structure in software architecture
Levels of abstraction
Multithreaded programming
Mutual exclusion (mutex)
Philosophy of computer programming and computing science
Producer–consumer problem (bounded buffer problem)
Program families
Predicate transformer semantics
Process synchronization
Self-stabilizing distributed system
Semaphore (programming)
Separation of concerns
Sleeping barber problem
Software crisis
Structured analysis
Structured programming
THE multiprogramming system
Unbounded nondeterminism
Weakest precondition calculus
Algorithms
Banker's algorithm
Dijkstra's algorithm
DJP algorithm (Prim's algorithm)
Dijkstra-Scholten algorithm
Dekker's algorithm (generalization)
Smoothsort
Shunting-yard algorithm
Tri-color marking algorithm
Concurrent algorithm
Distributed algorithm
Deadlock prevention algorithm
Self-stabilizing algorithm
Related people
Shlomi Dolev
Per Brinch Hansen
Tony Hoare
Ole-Johan Dahl
Leslie Lamport
David Parnas
Adriaan van Wijngaarden
Niklaus Wirth
Other topics
Dijkstra Prize (Edsger W. Dijkstra Prize in Distributed Computing)
Centrum Wiskunde & Informatica
E.W. Dijkstra Archive (University of Texas at Austin)
List of pioneers in computer science
List of important publications in computer science
List of important publications in theoretical computer science
List of important publications in concurrent, parallel, and distributed computing
Wikiquote
Retrieved from "https://en.wikipedia.org/w/index.php?title=Producer–consumer_problem&oldid=816492525"
Categories:
Concurrency (computer science)
Edsger W. Dijkstra
Hidden categories:
Articles lacking in-text citations from September 2014
All articles lacking in-text citations
All articles with unsourced statements
Articles with unsourced statements from August 2012
Wikipedia articles needing clarification from January 2013
Articles with example Java code
Navigation menu
Personal tools
Not logged in
Talk
Contributions
Create account
Log in
Namespaces
Article
Talk
Variants
Views
Read
Edit
View history
More
Search
Navigation
Main page
Contents
Featured content
Current events
Random article
Donate to Wikipedia
Wikipedia store
Interaction
Help
About Wikipedia
Community portal
Recent changes
Contact page
Tools
What links here
Related changes
Upload file
Special pages
Permanent link
Page information
Wikidata item
Cite this page
Print/export
Create a book
Download as PDF
Printable version
Languages
Čeština
Deutsch
Español
فارسی
Français
한국어
Italiano
עברית
Magyar
Монгол
Polski
Українська
中文
Edit links
This page was last edited on 21 December 2017, at 18:31.
Text is available under the Creative Commons Attribution-ShareAlike License; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.
Privacy policy
About Wikipedia
Disclaimers
Contact Wikipedia
Developers
Cookie statement
Mobile view
Enable previews

values: mw-page-base noprint

values: mw-head-base noprint

values: firstHeading firstHeading en

values: siteSub noprint

values: jump-to-nav mw-jump

value: td

values: Wikipedia:WikiProject Fact and Reference Check

value: span

value: small

values: plainlinks metadata ambox ambox-style ambox-More_footnotes

values:
/wiki/Buffer_(computer_science)
mw-redirect
Buffer (computer science)

values:
/wiki/Queue_(data_structure)
mw-redirect
Queue (data structure)

values:
/wiki/Pseudo_code
mw-redirect
Pseudo code

values: This claim needs references to reliable sources. (August 2012)

values:
noprint Inline-Template Template-Fact
white-space:nowrap;

values: The text near this tag may need clarification or removal of jargon. (January 2013)

values:
noprint Inline-Template
margin-left:0.1em; white-space:nowrap;

values: Edit section: Without semaphores or monitors

values: display:table-cell;padding:0.2em 0.2em 0.2em 0.3em;vertical-align:middle

values: margin:0.5em 0 0.5em 1em;border:solid #aaa 1px

values:
/wiki/Atomic_operation
mw-redirect
Atomic operation

values:
/wiki/Design_pattern_(computer_science)
mw-redirect
Design pattern (computer science)

values:
reflist mw-references-wrap
list-style-type: decimal;

values:
nofollow
external text
http://www.bayimage.com/code/ProCon.h

values: Template talk:Concurrent computing (page does not exist)

values:
/wiki/Calculus_of_Communicating_Systems
mw-redirect
Calculus of Communicating Systems

values: Language Of Temporal Ordering Specification

attrs: alt src title width height srcset data-file-width data-file-height

values: nowraplinks hlist collapsible autocollapse navbox-inner

values: Template talk:Edsger Dijkstra (page does not exist)

values:
/wiki/Structured_Programming
mw-redirect
Structured Programming

values:
/wiki/Programming_methodology
mw-redirect
Programming methodology

values:
/wiki/Programming_language_research
mw-redirect
Programming language research

values:
/wiki/Concurrent_programming
mw-redirect
Concurrent programming

values:
/wiki/Cooperating_sequential_processes
mw-redirect
Cooperating sequential processes

values:
/wiki/Deadly_embrace
mw-redirect
Deadly embrace

values:
/wiki/Fault-tolerant_system
mw-redirect
Fault-tolerant system

values:
/wiki/Goto-less_programming
mw-redirect
Goto-less programming

values:
/wiki/Multithreaded_programming
mw-redirect
Multithreaded programming

values:
/wiki/Bounded_buffer_problem
mw-redirect
Bounded buffer problem

values:
/wiki/Self-stabilizing_system
mw-redirect
Self-stabilizing system

values:
/wiki/Weakest_precondition_calculus
mw-redirect
Weakest precondition calculus

values:
/wiki/DJP_algorithm
mw-redirect
DJP algorithm

values:
/wiki/Dijkstra-Scholten_algorithm
mw-redirect
Dijkstra-Scholten algorithm

values: E.W. Dijkstra Archive (page does not exist)

values: nowraplinks collapsible autocollapse navbox-inner

values: Category:Articles lacking in-text citations from September 2014

values: Category:All articles lacking in-text citations

values: Category:All articles with unsourced statements

values: Category:Articles with unsourced statements from August 2012

values: Category:Wikipedia articles needing clarification from January 2013

values: Category:Articles with example Java code

values: Discussion about edits from this IP address [ctrl-alt-n]

values: A list of edits made from this IP address [ctrl-alt-y]

values: You are encouraged to create an account and log in; however, it is not mandatory

values: You're encouraged to log in; however, it's not mandatory. [ctrl-alt-o]

values:
/wiki/Producer%E2%80%93consumer_problem
View the content page [ctrl-alt-c]
c

values: Discussion about the content page [ctrl-alt-t]

values: p-namespaces navigation vectorTabs p-namespaces-label

values:
p-variants
navigation
vectorMenu emptyPortlet
p-variants-label

values: Past revisions of this page [ctrl-alt-h]

values: p-views navigation vectorTabs p-views-label

values:
p-cactions
navigation
vectorMenu emptyPortlet
p-cactions-label

values:
mw-wiki-logo
/wiki/Main_Page
Visit the main page

values:
/wiki/Main_Page
Visit the main page [ctrl-alt-z]
z

values: Featured content – the best of Wikipedia

values: Find background information on current events

values: Problém producenta a spotřebitele – Czech

values: مسئله تولیدکننده-مصرف‌کننده – Persian

values: Problème des producteurs et des consommateurs – French

values: 생산자-소비자 문제 – Korean

values: Problema del produttore/consumatore – Italian

values: בעיית יצרן-צרכן – Hebrew

values: Problem producenta i konsumenta – Polish

values: Задача постачальника-споживача – Ukrainian

values: 生产者消费者问题 – Chinese

values: /static/images/wikimedia-button-1.5x.png 1.5x, /static/images/wikimedia-button-2x.png 2x

values: /static/images/poweredby_mediawiki_132x47.png 1.5x, /static/images/poweredby_mediawiki_176x62.png 2x

values:
suggestions
display: none; font-size: 13px;

values: mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Producer–consumer_problem rootpage-Producer–consumer_problem skin-vector action-view