Example #1
0
        public void vásárol()           /* vásárló szemaforja a tele */
        {
            int kenyér;

            while (nyitva)
            {
                //down(&tele);		/*tele csökken, ha előtte>0, mehet tovább*/
                bolt1.tele.WaitOne();
                //down(&szabad);	/*Piszkálhatjuk-e a pékség polcát? */
                bolt1.szabad.WaitOne();
                //kenyér = kenyér_polcról();  /* Igen, levesszük a kenyeret. */
                bolt1.kenyér_polcról_le();
                // Az ablakban csak a kenyér számot módosítjuk!!!!
                if (this.kenyerek_száma.InvokeRequired)
                {
                    // Másik szál, kell az Invoke hívás.
                    kenyérszám_hívás d = new kenyérszám_hívás(kenyérszám_állítás);
                    this.Invoke
                        (d, new object[] { bolt1.Darab.ToString() });
                }
                else
                {
                    //  Azonos szál, nem kell Invoke
                    this.kenyerek_száma.Text = bolt1.Darab.ToString() + " (Nincs Invoke)";
                }

                //kenyerek_száma.Text = bolt1.Darab.ToString();
                //up(&szabad);		/* Elengedjük a pékség polcát. */
                bolt1.szabad.Release();
                //up(&üres);		/* Jelezzük péknek, van hely, lehet sütni. */
                bolt1.üres.Release();
                //kenyér_elfogyasztása(kenyér);
                // itt csinálhatnánk valamit
                kenyér = 0; // megettem
                Thread.Sleep(1300);
            }
        }
Example #2
0
        //
        // A megjegyzésekben olvashatók a klasszikus algoritmus hívások (down, up)
        // Ezek a .NET FrameWorkben más névre hallgatnak...
        //
        public void pék_süt()           /* N értéke a „kenyerespolc” mérete */
        {
            //kenyérbolt b = bolt as kenyérbolt;
            int kenyér;

            while (nyitva)
            {
                kenyér = 1; //pék_süt(); 1= kenyér megsült
                //down(&üres);		/* üres csökken, ha előtte>0, mehet tovább*/
                bolt1.üres.WaitOne();
                //down(&szabad);	/* Piszkálhatjuk-e a pékség polcát? */
                bolt1.szabad.WaitOne();
                //kenyér_polcra(kenyér);  /* Igen, betesszük a kenyeret. */
                bolt1.kenyér_polcra();
                // Az ablakban csak a kenyér számot módosítjuk!!!!
                if (this.kenyerek_száma.InvokeRequired)
                {
                    // Másik szál, kell az Invoke hívás
                    kenyérszám_hívás d = new kenyérszám_hívás(kenyérszám_állítás);
                    this.Invoke
                        (d, new object[] { bolt1.Darab.ToString() });
                }
                else
                {
                    // Azonos szál, nem kell Invoke
                    this.kenyerek_száma.Text = bolt1.Darab.ToString() + " (Nincs Invoke)";
                }

                //kenyerek_száma.Text = bolt1.Darab.ToString();
                //up(&szabad);		/* Elengedjük a pékség polcát. */
                bolt1.szabad.Release();
                //up(&tele);		/* Jelezzük vásárlónak, van kenyér. */
                bolt1.tele.Release();
                Thread.Sleep(600); /* cigarettaszünet */
            }
        }