// Handlanger.cpp : main project file. #include "stdafx.h"

Like dokumenter
public ref class TraadKlasse { public: static void traadramme() { int teller=0; array<string^>^colornames = Enum::GetNames(ConsoleColor::typeid);

static int ant_steiner; //antall steiner static int teller2 = 0; //teller for printing til Thread^ murer; //murertråden

Console::Write("Velg en prosess ved å trykke et nummer"); Console::Write("1. Start Kalkulatoren"); Console::Write("2.

2. ØVING I WINDOWS FRA CHRISTIAN ANDOLO

static int skrivetidsfrist = 0; // antall overskredet tid når skrive

Program socket server

1 ØVING I WINDOWS FRA CHRISTIAN ANDOLO

Program delegate. Lage et nytt prosjekt i Visual Studio

Hva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; }

En prosess kan sees på som et stykke arbeid som skal utføres på datamaskinen. Ofte vil det være flere prosesser/tråder på datamaskinen samtidig.

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

Programmering i C++ Løsningsforslag Eksamen høsten 2005

Øvingsforelesning i Python (TDT4110)

LITT OM OPPLEGGET. INF1000 EKSTRATILBUD Stoff fra uke September 2012 Siri Moe Jensen EKSEMPLER

EKSAMEN. Operativsystemer. Dato: 10. desember 2008 Eksamenstid: kl til kl

HØYSKOLEN I OSLO, AVDELING FOR INGENIØRUTDANNING

Mer om C programmering og cuncurrency

GUI («Graphical User Interface») del 2

TOD063 Datastrukturer og algoritmer

Kontinuasjonseksamen

Dagens forelesning. Java 13. Rollefordeling (variant 1) Rollefordeling (variant 2) Design av større programmer : fordeling av roller.

Eksamensoppgaver 2014

INF januar 2015 Stein Michael Storleer (michael) Lenkelister

Fra Python til Java. En introduksjon til programmeringsspråkenes verden. Dag Langmyhr

INF1000 Eksamen 2014 (modifisert)

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Dagens tema C, adresser og pekere

Ark 3 av 26. printf("i adresse %08x ligger b med verdien %d.\n", &b, b); printf("i adresse %08x ligger a med verdien %d.

Haskell. Kjetil Ørbekk. Programvareverkstedet, 19. mars 2009

1,r H øgs kolen i Østfol d

Gjennomgang prøveeksamen oppgave 1, 2, 4, 5, 7

UNIVERSITETET I OSLO

Hvis en person har inntekt < , så betaler han 10% skatt på alt, og ellers betaler han 10% skatt på de første og 30% på resten.

Hvis en person har inntekt < , så betaler han 10% skatt på alt, og ellers betaler han 10% skatt på de første og 30% på resten.

IN Notat om I/O i Java

EKSAMEN. Operativsystemer. 1. Læreboken "A Practical Guide to Red Hat Linux" av Mark Sobell 2. Maks. tre A-4 ark med selvskrevne notater.

Løsningsforslag ukeoppg. 6: 28. sep - 4. okt (INF Høst 2011)

INF Uke 10. Ukesoppgaver oktober 2012

UNIVERSITETET I OSLO

Del 1 En oversikt over C-programmering

INF1010, 22. mai Prøveeksamen (Eksamen 12. juni 2012) Stein Gjessing Inst. for Informatikk Universitetet i Oslo

Leksjon 7. Filer og unntak

2. Pekere og referanser.

TDT4110 IT Grunnkurs Høst 2015

Forkurs INF1010. Dag 1. Andreas Færøvig Olsen Tuva Kristine Thoresen

Høgskolen i Gjøvik Institutt for informatikk og medieteknikk E K S A M E N. Grunnleggende programmering

INF1000 EKSTRATILBUD. Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen

TDT4102 Prosedyre og Objektorientert programmering Vår 2014

Tilkobling og Triggere

OPPGAVE 1 OBLIGATORISKE OPPGAVER (OBLIG 1) (1) Uten å selv implementere og kjøre koden under, hva skriver koden ut til konsollen?

UNIVERSITETET I OSLO

INF Ekstrainnlevering

INF1000 Forelesning 9. Hashmap Eksempel: Flyreservasjon

Løse reelle problemer

Informasjon Eksamen i IN1000 høsten 2017

HashMap. INF1000 Forelesning 9. Ulike versjoner i Java 1.4 (gammel) og Java 1.5/1.6 av HashMap. Objekter lagres med en søkenøkkel

Forslag til løsning på oppgavesett for uke 40

INF1000: noen avsluttende ord

Gjennomgang av eksamen H99

UNIVERSITETET I OSLO

Informasjon Prøveeksamen i IN1000 høsten 2018

Dagens tema Kapittel 8: Objekter og klasser

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

Kontinuasjonseksamensoppgave i IMT1082 Objekt-orientert programmering

UNIVERSITETET I OSLO

E K S A M E N 96HINDA / 96HINDE (1 AA / AE)

EKSAMEN. Operativsystemer. Kontroller at oppgaven er komplett før du begynner å besvare spørsmålene.

Avdeling for ingeniørutdanning Institutt for teknologi

Binærfiler versus tekstfiler

INF2810: Funksjonell Programmering. Muterbare data

Enkel lesing og skriving i Java

Oblig 4 (av 4) INF1000, høsten 2012 Værdata, leveres innen 9. nov. kl

import java.io.*; import java.util.*; import javagently.text;

Løsningsforslag Test 2

Oblig 4Hybelhus litt mer tips enn i oppgaven

INF2100. Oppgave 1, 2 og 3. Løsningsforslag til oppgaver 23. og 24. september Her er det mange mulige løsninger her er én: import java.io.

INF 1010, vår 2005 Løsningsforslag uke 11

Pekere og referanser.

Introduksjon til objektorientert. programmering. Hva skjedde ~1967? Lokale (og globale) helter. Grunnkurs i objektorientert.

Hangman. Steg 1: Velg et ord. Steg 2: Gjett en bokstav. Sjekkliste. Sjekkliste. Introduksjon

Løsningsforslag til eksamen i IN 147 og IN 147A

TDT4110 IT Grunnkurs Høst 2016

Løsningsforslag Kontinuasjonseksamen i TDT4110 Informasjonsteknologi - grunnkurs

Tre måter å lese fra terminal. Java 4. Eksempel. Formatert utskrift til skjerm

Kontinuasjonseksamen

UNIVERSITETET I OSLO

Oblig4 - forklaringer. Arne og Ole Christian

UNIVERSITETET I OSLO

Semantikk. Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7) Semantikk. Semantikk. En måte å svare på: gi semantikken til språket!

Kontinuasjonseksamen

Dagens tema. C-programmering. Nøkkelen til å forstå C-programmering ligger i å forstå hvordan minnet brukes.

Løsningsforslag for eksamensoppgave, våren 2004

INF Notater. Veronika Heimsbakk 10. juni 2012

Oppgave 1 - Kortsvarsoppgave. INF1000 eksamen V05. Oppgave 1 (c) Oppgave 1 (b) Svar: a = 9, b=10

Bli Kjent med Datamaskinen Introduksjon ComputerCraft PDF

La oss begynne med en repetisjon av hva som skjer når du kjører Javaprogrammet

HØGSKOLEN I SØR-TRØNDELAG

Løsningsforslag ukeoppg. 2: 31. aug - 6. sep (INF Høst 2011)

Transkript:

// Handlanger.cpp : main project file. #include "stdafx.h" using namespace System; using namespace System::Threading; using namespace System::IO; using namespace System::Runtime::Serialization; using namespace System::Runtime::Serialization::Formatters::Binary; int main(array<system::string ^> ^args) Console::Title = "Handlanger"; int ant_steiner = 10; //Legg 10 steiner i stabelen String^ filnavn = "C:\\Users\\Chrisandolo\\Desktop\\ant_steiner.txt"; //Stabelfilen legges her FileStream^ fs = gcnew FileStream(filnavn, FileMode::Create); //Lag formatter->serialize(fs, ant_steiner); //Skriv antall steiner til Console::WriteLine("Klarte ikke å skrive til fil"); //Skriv feilmelding om det ikke går fs->close(); //Lukk koblingen til Semaphore^ stabel_semafor = gcnew Semaphore(1,1, "stabel_semafor"); Mutex^ skjerm_mutex = gcnew Mutex(false, "skjerm_mutex"); EventWaitHandle^ tomt_event = gcnew EventWaitHandle(false, EventResetMode::AutoReset, "tomt_event"); EventWaitHandle^ fullt_event = gcnew EventWaitHandle(false, EventResetMode::AutoReset, "fullt_event"); Random^ rand = gcnew Random; //Lag en random while (true) stabel_semafor->waitone(); //Ta over styringa av stabelen String^ filnavn = "C:\\Users\\Chrisandolo\\Desktop\\ant_steiner.txt"; //Stabelfilen ligger her FileStream^ fs = gcnew FileStream(filnavn, FileMode::Open); //Åpne ant_steiner = (int)formatter->deserialize(fs); //Les innholdet i som variabelen ant_steiner Console::WriteLine("Kunne ikke lese fil"); //Skriv feilmelding om det ikke går fs->close(); //Lukk ++ant_steiner; //Legg til en på tallet lest i fra FileStream^ fs2 = gcnew FileStream(filnavn, FileMode::Create); //Lag en ny stabelfil formatter->serialize(fs2, ant_steiner); //Skriv det nye tallet til filen

det ikke går Console::WriteLine("Kunne ikke skrive til fil"); //Skriv feilmelding om fs2->close(); //Lukk if (ant_steiner == 1) //Hvis ant_steiner er lik 1 tomt_event->set(); //Set eventen tomt_event skjerm_mutex->waitone(); //Tar over styringen av skjermen Console::WriteLine("\n Handlanger legger en stein i stabelen: " + ant_steiner + " steiner i stabelen"); //Skriv til skjerm skjerm_mutex->releasemutex(); //Slipp skjermen stabel_semafor->release(); //Slipp styringen av if (ant_steiner == 25) //Er det mer en 25 steiner i stabelen fullt_event->waitone(); //Kjør fult_event Thread::Sleep(1000 * rand->next(1, 4)); //Sov i ett til fire sekunder return 0; #include "stdafx.h" using namespace System; using namespace System::Threading; using namespace System::IO; using namespace System::Runtime::Serialization; using namespace System::Runtime::Serialization::Formatters::Binary; int main(array<system::string ^> ^args) Console::Title = "Murer"; int ant_steiner; //Definer antall steiner variablen Semaphore^ stabel_semafor = nullptr; Mutex^ skjerm_mutex = nullptr; EventWaitHandle^ tomt_event = nullptr; EventWaitHandle^ fullt_event = nullptr; stabel_semafor = Semaphore::OpenExisting("stabel_semafor"); //Prøv å åpne

eksisterende stabel_semafor Console::WriteLine("Kunne ikke åpne stabel_semafor: 0", ex->message); //Går ikke det, skrivfeilmelding Console::WriteLine("Ikke tilgang til stabel_semafor: 0", skjerm_mutex = Mutex::OpenExisting("skjerm_mutex"); //Prøv å åpne eksisterende skjerm_mutex Console::WriteLine("Kunne ikke åpne skjerm_mutex: 0", Console::WriteLine("Ikke tilgang til skjerm_mutex: 0", tomt_event = EventWaitHandle::OpenExisting("tomt_Event"); //Prøv å åpne eksisterende tomt_event Console::WriteLine("Kunne ikke åpne fullt_event: 0", Console::WriteLine( L"Ikke tilgang til tomt_event: 0", fullt_event = EventWaitHandle::OpenExisting("fullt_Event"); //Prøv å åpne eksisterende fullt_event Console::WriteLine("Kunne ikke åpne fullt_event: 0",

Console::WriteLine("Ikke tilgang til fullt_event: 0", Random^ rand = gcnew Random; Console::WriteLine(); while (true) stabel_semafor->waitone(); //Ta over styringen av stabelen String^ filnavn = "C:\\Users\\Chrisandolo\\Desktop\\ant_steiner.txt"; //Stabelfilen ligger her FileStream^ fs = gcnew FileStream(filnavn, FileMode::Open); //Åpne ant_steiner = (int)formatter->deserialize(fs); //Les innholdet i som variabelen ant_steiner filen Console::WriteLine("Kunne ikke lese fil"); //Skriv feilmelding om det ikke går fs->close(); --ant_steiner; //Fjern en stein i fra stabelen FileStream^ fs2 = gcnew FileStream(filnavn, FileMode::Create); //Lag en ny stabelfil formatter->serialize(fs2, ant_steiner); //Skriv det nye tallet til Console::WriteLine("Kunne ikke skrive til fil"); //Skriv feilmelding om det ikke går fs2->close(); //Lukk if (ant_steiner == 24) //Hvis ant_steiner er lik 24 fullt_event->set(); //Set eventen fullt_event skjerm_mutex->waitone(); //Tar over styringen av skjermen Console::WriteLine("\n Murer tar en stein fra stabelen: " + ant_steiner + " steiner i stabelen"); //Skriv til skjerm skjerm_mutex->releasemutex(); //Slipp skjermen stabel_semafor->release(); //Slipp styringen av if (ant_steiner == 0) //Hvis ant_steiner er lik 0 tomt_event->waitone(); //Set eventen tomt_event Thread::Sleep(1000 * rand->next(1, 4)); //Sov i ett til fire sekunder return 0;