1. National Institute of Environmental Health Science. Endocrine disruptors fact sheet. Available from: http://www.niehs.nih.gov/health/materials/endocrine_disruptors_508.pdf. Accessed May, 2010.
2. Schecter A, Päpke O, Tung KC, Staskal D, Birnbaum L. Polybrominated diphenyl ethers contamination of United States food. Environ Sci Technol. 2004;38:5306–11. doi: 10.1021/es0490830.[PubMed][Cross Ref]
3. Cichna-Markl M. Sample clean-up by sol-gel immunoaffinity chromatography for the determination of bisphenol A in food and urine. Methods. 2012;56:186–91. doi: 10.1016/j.ymeth.2011.08.011.[PubMed][Cross Ref]
4. Charles JW. Changes in indoor pollutants since the 1950s. Atmos Environ. 2009;43:153–69. doi: 10.1016/j.atmosenv.2008.09.044.[Cross Ref]
5. Sharpe RM, Irvine DS. How strong is the evidence of a link between environmental chemicals and adverse effects on human reproductive health? BMJ. 2004;328:447–51. doi: 10.1136/bmj.328.7437.447.[PMC free article][PubMed][Cross Ref]
6. Bertelsen RJ, Carlsen KC, Calafat AM, Hoppin JA, Håland G, Mowinckel P, et al. Urinary biomarkers for phthalates associated with asthma in Norwegian children. Environ Health Perspect. 2013;121:251–6.[PMC free article][PubMed]
7. Soares A, Guieysse B, Jefferson B, Cartmell E, Lester JN. Nonylphenol in the environment: a critical review on occurrence, fate, toxicity and treatment in wastewaters. Environ Int. 2008;34:1033–49. doi: 10.1016/j.envint.2008.01.004.[PubMed][Cross Ref]
8. Siu ER, Mruk DD, Porto CS, Cheng CY. Cadmium-induced testicular injury. Toxicol Appl Pharmacol. 2009;238:240–9. doi: 10.1016/j.taap.2009.01.028.[PMC free article][PubMed][Cross Ref]
9. Järup L, Akesson A. Current status of cadmium as an environmental health problem. Toxicol Appl Pharmacol. 2009;238:201–8. doi: 10.1016/j.taap.2009.04.020.[PubMed][Cross Ref]
10. Pappas RS, Polzin GM, Zhang L, Watson CH, Paschal DC, Ashley DL. Cadmium, lead, and thallium in mainstream tobacco smoke particulate. Food Chem Toxicol. 2006;44:714–23. doi: 10.1016/j.fct.2005.10.004.[PubMed][Cross Ref]
11. Yeo MK. A study of effects and control policy of endocrine disruptors. Seoul: Korean Institute of Criminology; 2002.
12. International Food Safety Authorities Network. BISPHENOL A (BPA) - Current state of knowledge and future actions by WHO and FAO. Available from: http://www.who.int/foodsafety/publications/fs_management/No_05_Bisphenol_A_Nov09_en.pdf. Accessed November 27, 2009.
13. European Commission. Ban of phthalates in childcare articles and toys. Available from: http://europa.eu/rapid/press-release_IP-99-829_en.htm?locale=en. Accessed November 10, 1999.
14. 110th Congress of the United States of America. An Act To establish consumer product safety standards and other safety requirements for children's products and to reauthorize and modernize the Consumer Product Safety Commission. Available from: http://www.gpo.gov/fdsys/pkg/BILLS-110hr4040enr/content-detail.html. Accessed August 1, 2008.
15. David A, Fenet H, Gomez E. Alkylphenols in marine environments: distribution monitoring strategies and detection considerations. Mar Pollut Bull. 2009;58:953–60. doi: 10.1016/j.marpolbul.2009.04.021.[PubMed][Cross Ref]
16. Celik L, Davey J, Lund D, Schiøtt B. Exploring interactions of endocrine-disrupting compounds with different conformations of the human estrogen receptor alpha ligand binding domain: a molecular docking study. Chem Res Toxicol. 2008;21:2195–206. doi: 10.1021/tx800278d.[PubMed][Cross Ref]
17. Masuno H, Iwanami J, Kidani T, Sakayama K, Honda K. Bisphenol a accelerates terminal differentiation of 3T3-L1 cells into adipocytes through the phosphatidylinositol 3-kinase pathway. Toxicol Sci. 2005;84:319–27. doi: 10.1093/toxsci/kfi088.[PubMed][Cross Ref]
18. Ohtsubo M, Theodoras AM, Schumacher J, Roberts JM, Pagano M. Human cyclin E, a nuclear protein essential for the G1-to-S phase transition. Mol Cell Biol. 1995;15:2612–24.[PMC free article][PubMed]
19. Kester MH, Bulduk S, Tibboel D, Meinl W, Glatt H, Falany CN, et al. Potent inhibition of estrogen sulfotransferase by hydroxylated PCB metabolites: a novel pathway explaining the estrogenic activity of PCBs. Endocrinology. 2000;141:1897–900. doi: 10.1210/endo.141.5.7530.[PubMed][Cross Ref]
20. Déchaud H, Ravard C, Claustrat F, de la Perrière AB, Pugeat M. Xenoestrogen interaction with human sex hormone-binding globulin (hSHBG) Steroids. 1999;64:328–34. doi: 10.1016/S0039-128X(98)00114-7.[PubMed][Cross Ref]
21. Jagadeesh S, Kyo S, Banerjee PP. Genistein represses telomerase activity via both transcriptional and posttranslational mechanisms in human prostate cancer cells. Cancer Res. 2006;66:2107–15. doi: 10.1158/0008-5472.CAN-05-2494.[PubMed][Cross Ref]
22. Kortenkamp A, Altenburger R. Synergisms with mixtures of xenoestrogens: a reevaluation using the method of isoboles. Sci Total Environ. 1998;221:59–73. doi: 10.1016/S0048-9697(98)00261-7.[PubMed][Cross Ref]
23. Watson PH, Pon RT, Shiu RP. Inhibition of c-myc expression by phosphorothioate antisense oligonucleotide identifies a critical role for c-myc in the growth of human breast cancer. Cancer Res. 1991;51:3996–4000.[PubMed]
24. Li X, Zhang S, Safe S. Activation of kinase pathways in MCF-7 cells by 17beta-estradiol and structurally diverse estrogenic compounds. J Steroid Biochem Mol Biol. 2006;98:122–32. doi: 10.1016/j.jsbmb.2005.08.018.[PubMed][Cross Ref]
25. Cho H, Katzenellenbogen BS. Synergistic activation of estrogen receptor-mediated transcription by estradiol and protein kinase activators. Mol Endocrinol. 1993;7:441–52.[PubMed]
26. Henson MC, Chedrese PJ. Endocrine disruption by cadmium, a common environmental toxicant with paradoxical effects on reproduction. Exp Biol Med (Maywood) 2004;229:383–92.[PubMed]
27. Darbre PD. Metalloestrogens: an emerging class of inorganic xenoestrogens with potential to add to the oestrogenic burden of the human breast. J Appl Toxicol. 2006;26:191–7. doi: 10.1002/jat.1135.[PubMed][Cross Ref]
28. Smida AD, Valderrama XP, Agostini MC, Furlan MA, Chedrese J. Cadmium stimulates transcription of the cytochrome p450 side chain cleavage gene in genetically modified stable porcine granulosa cells. Biol Reprod. 2004;70:25–31. doi: 10.1095/biolreprod.103.019000.[PubMed][Cross Ref]
29. Johnson MD, Kenney N, Stoica A, Hilakivi-Clarke L, Singh B, Chepko G, et al. Cadmium mimics the in vivo effects of estrogen in the uterus and mammary gland. Nat Med. 2003;9:1081–4. doi: 10.1038/nm902.[PubMed][Cross Ref]
30. Brama M, Gnessi L, Basciani S, Cerulli N, Politi L, Spera G, et al. Cadmium induces mitogenic signaling in breast cancer cell by an ERalpha-dependent mechanism. Mol Cell Endocrinol. 2007;264:102–8. doi: 10.1016/j.mce.2006.10.013.[PubMed][Cross Ref]
31. Martin MB, Voeller HJ, Gelmann EP, Lu J, Stoica EG, Hebert EJ, et al. Role of cadmium in the regulation of AR gene expression and activity. Endocrinology. 2002;143:263–75. doi: 10.1210/endo.143.1.8581.[PubMed][Cross Ref]
32. Lafuente A, González-Carracedo A, Romero A, Cano P, Esquifino AI. Cadmium exposure differentially modifies the circadian patterns of norepinephrine at the median eminence and plasma LH, FSH and testosterone levels. Toxicol Lett. 2004;146:175–82. doi: 10.1016/j.toxlet.2003.10.004.[PubMed][Cross Ref]
33. Gunnarsson D, Nordberg G, Selstam G. Differential effects of cadmium on the gene expression of seven-transmembrane-spanning receptors and GAPDH in the rat testis. Toxicol Lett. 2007;168:51–7. doi: 10.1016/j.toxlet.2006.10.015.[PubMed][Cross Ref]
34. Lafuente A, Cano P, Esquifino A. Are cadmium effects on plasma gonadotropins, prolactin, ACTH, GH and TSH levels, dose-dependent? Biometals. 2003;16:243–50. doi: 10.1023/A:1020658128413.[PubMed][Cross Ref]
35. Grün F, Blumberg B. Endocrine disrupters as obesogens. Mol Cell Endocrinol. 2009;304:19–29. doi: 10.1016/j.mce.2009.02.018.[PMC free article][PubMed][Cross Ref]
36. Grün F, Blumberg B. Minireview: the case for obesogens. Mol Endocrinol. 2009;23:1127–34. doi: 10.1210/me.2008-0485.[PMC free article][PubMed][Cross Ref]
37. Tontonoz P, Hu E, Spiegelman BM. Stimulation of adipogenesis in fibroblasts by PPAR gamma 2, a lipid-activated transcription factor. Cell. 1994;79:1147–56. doi: 10.1016/0092-8674(94)90006-X.[PubMed][Cross Ref]
38. Tontonoz P, Spiegelman BM. Fat and beyond: the diverse biology of PPARgamma. Annu Rev Biochem. 2008;77:289–312. doi: 10.1146/annurev.biochem.77.061307.091829.[PubMed][Cross Ref]
39. Walkey CJ, Spiegelman BM. A functional peroxisome proliferator-activated receptor-gamma ligand-binding domain is not required for adipogenesis. J Biol Chem. 2008;283:24290–4. doi: 10.1074/jbc.C800139200.[PMC free article][PubMed][Cross Ref]
40. Hiromori Y, Nishikawa J, Yoshida I, Nagase H, Nakanishi T. Structure-dependent activation of peroxisome proliferator-activated receptor (PPAR) gamma by organotin compounds. Chem Biol Interact. 2009;180:238–44. doi: 10.1016/j.cbi.2009.03.006.[PubMed][Cross Ref]
41. Feige JN, Gelman L, Rossi D, Zoete V, Métivier R, Tudor C, et al. The endocrine disruptor monoethyl-hexyl-phthalate is a selective peroxisome proliferator-activated receptor gamma modulator that promotes adipogenesis. J Biol Chem. 2007;282:19152–66. doi: 10.1074/jbc.M702724200.[PubMed][Cross Ref]
42. Kanayama T, Kobayashi N, Mamiya S, Nakanishi T, Nishikawa J. Organotin compounds promote adipocyte differentiation as agonists of the peroxisome proliferator-activated receptor gamma/retinoid X receptor pathway. Mol Pharmacol. 2005;67:766–74. doi: 10.1124/mol.104.008409.[PubMed][Cross Ref]
43. Grün F, Blumberg B. Environmental obesogens: organotins and endocrine disruption via nuclear receptor signaling. Endocrinology. 2006;147:S50–5. doi: 10.1210/en.2005-1129.[PubMed][Cross Ref]
44. Rubin BS, Soto AM. Bisphenol A: perinatal exposure and body weight. Mol Cell Endocrinol. 2009;
When I was first introduced to the Dining Philosophers problem, my initial reaction was that it is a silly problem with a touch of obscurantism. As I read, it was originally created by Dijkstra as an exam problem in the 1960s. Some teachers do indeed have a predilection for whimsical problem formulations, which more often than not, though, are distracting more than they are illuminating. Later on the Dining Philosophers problem was promoted to a canonical problem in computer science, arguably after Tony Hoare discussed it in his book Communicating Sequential Processes. Now it is a standard problem in any course on Operating Systems or Concurrent Programming.
In this article, I will first highlight the issue that the original problem is poorly formulated. Second, I will propose a solution that is simpler than the three typical solutions that are commonly taught, and similar in spirit to a fourth but non-canonical solution.
First of all, what bugs me the most is that this problem appears to be much deeper than it actually is, by giving it this utterly pretentious name, Dining Philosophers. It is as follows: there are five philosophers, five forks, and an infinite amount of spaghetti. For some odd reason, philosophers need two forks to eat. They cannot eat and think at the same time, and they all want to both eat and think. Since nobody eats with two forks, I’ll replace the forks with chopsticks, and the spaghetti with rice. I will still refer to them as philosophers, to retain the pretentious nature of this problem. “Guys with chopsticks” just does not have the same ring as “Dining Philosophers”.
Let me now run through the typical issues discussed in the context of the Dining Philosophers problem:
1) Deadlock: if every philosopher grabs just one chopstick, they all wait forever until a second chopstick becomes available.
2) Livelock: if every philosopher can only hold on to chopsticks only a given amount of time, and they manage to perfectly synchronize this, you end up with the situation that they all pick up and release one chopstick at the same time, over and over.
The three canonical solutions are:
1) Resource hierarchy (Dijkstra): Number the chopsticks from 1 to 5; introduce the convention that each philosopher has to pick up a chopstick with a lower number first. This prevents deadlock because, after allocating four chopsticks to four philosophers, the last philosopher cannot pick up chopstick number 5, since 5 is the highest number.
2) Create an arbitrator: implemented as a mutex, an arbitrator gives permission to philosophers to pick up two chopsticks at a time.
3) Introduce the notion of cleanliness (Chandy/Misra): label philosophers with an id ranging from 1 to n. For each pair of philosophers fighting over one particular chopstick, give it to the philosopher with the lower id. Each chopstick can be dirty or clean, and initially they are all dirty. When a philosopher wants to eat, he needs to request chopsticks. Any philosopher who receives a request keeps a chopstick if it is clean, but if it is dirty, he relinquishes it. Before handing over a chopstick, he cleans it. After a philosopher is done eating, all chopsticks are marked as dirty.
Those are the three canonical solutions to the Dining Philosophers problem, but I came across a fourth one:
4) Remove one chair (Stallings): Take n philosophers and n chopsticks. Now, remove one chair so that only n-1 philosophers can take a seat.
A different, and simple, solution
I thought about the dining philosophers problem a bit, and came up with a solution that retains the original conventions. In that regard, it is unlike the fourth approach, even though it is similar in spirit, as it equally aims for a rather straightforward solution. Obviously, chopsticks can only be used in pairs. Thus, the solution is to simply let philosophers only take two chopsticks at a time — and we are done! Concretely, put all n philosophers in a queue P, and all n chopsticks in a separate queue C (a stack would work just as well). While C contains at least two chopsticks, the philosopher at the top of P takes two chopsticks from C and eats, and so on.
It should be obvious why this approach works. If not: The philosopher at the top of P takes two chopsticks from C, and starts eating. When he is done (feel free to have him eat until he receives a request to release his chopsticks; it does not matter), he adds both chopsticks to C again. Continue until all chopsticks have been distributed. If there are no two chopsticks available, the remaining philosophers wait for their turn. Thus, the first philosopher takes two chopsticks, and eats. Then the second philosopher takes the next two chopsticks, and eats. The third philosopher would only get one chopstick, for the time being, so he waits. Eventually, though, the first philosopher will be done eating, and subsequently put his two chopsticks back to C. Because you always take two chopsticks from C, and philosophers only eat for a finite amount of time, there is neither deadlock nor starvation.
[EDIT: On Reddit is was pointed out that the stack is the arbitrator (waiter) in disguise. This is correct. There was also an issue that the chopsticks are treated as commodities, while they should be distinguishable. For instance, philosopher 1 can only take chopsticks 1 and 2, philosopher 2 only chopstick 2 and 3, and so on. To salvage my approach, which now makes it even clearer that C is just the waiter in disguise, have it store pairs of neighboring chopsticks. A more complicated bookkeeping mechanism is needed for the chopsticks, though. Anyway, using that approach, philosopher 1 takes the pair (1, 2), and leaves the waiting queue. Philosopher 2 would like to take pair (2, 3), but chopstick 2 is taken, so he has to move to the end of the waiting queue. Philosopher 3 can take chopsticks (3, 4), though, and so on. Once philosopher 1 is done, he returns the pair of chopsticks, and moves to the back of the waiting queue, etc.]
Lastly, note that there is no need to have exactly five philosophers. Presumably, this number is only used due to the historical accident of Dijkstra using that particular number. You need at least two. Some of the solutions we have seen have an administrative overhead, so it will only get more cumbersome the more philosophers we add to the table. However, by using a queue, you could feed an arbitrarily large number of philosophers without any overhead. Also note that whenever there is an odd number of chopsticks, there is one superfluous chopstick, since you cannot properly eat rice with just one chopstick. Thus, there are at least three aspects in the original problem statement that obscure the problem: the number 5, the strange convention of using two forks, and the fact that the fifth fork is superfluous. Lastly, calling the diners philosophers is potentially distracting.