Det kan være lurt å kommunisere meldinger mellom prosesser under følgende omstendigheter: Når en oppgave er ferdig, blir barneprosessen som ble startet av overordnede prosessen avsluttet. Barneprosessen kan ha kjørt en uendelig sløyfe. Når en fiasko eller annen hendelse som dødvakt oppstår, må en prosess som er en del av en gruppe enten stoppe eller signalisere de andre prosessene i gruppen. Mens koordinering, må to prosesser synkronisere ved hjelp av denne funksjonen. For eksempel kan en tråd bruke dette for å påvirke hvordan et signal sendes til en gruppe andre tråder. Følgende vist nedenfor er syntaksen til PTHEAD_KILL () -funksjonen til C. Signal.H -overskriftsfilen brukes fordi alle disse funksjonene er definert i denne overskriftsfilen.
#inkluderePThread Kill () -metoden vil gjøre feilkontroll om signalverdien ble satt til 0, men i virkeligheten er det ikke blitt gitt noe signal til denne funksjonen for tråden. Funksjonen returnerer null når den har fullført jobben. Hvis ikke, returneres en numerisk feil av funksjonen. Ingen signal leveres hvis pThread Kill () -metoden mislykkes. Hvis en av følgende oppstår: Ingen tråd kan oppdages som samsvarer med den som er angitt med den medfølgende tråd -IDen; Et ugyldig eller uautorisert signalnummer er verdien av signalargumentet.
La oss opprette en C -programmeringsfil for å forstå Pthread_Kill () -funksjonen. Ved å bruke VIM -kommandoen, må vi opprette en kodefil og lagre filen som pthread_kill.c. For å oppnå ønsket utfall, skriv den påfølgende kommandoen på skjermen.
Her er kodebiten; I de første kodelinjene inkluderte vi overskriftsfilene. Vi skriver bare ut meldingen fra tråden som nå kjører i Display_output -metoden. Vi har erklært en heltallstypevariabel i hovedfunksjonen for å oppdage trådstatusen. NUM -variabelen er initialisert, og trådopprettingsmetoden er passert. Pthread t brukes til å identifisere tråden på en måte. Deretter ved hjelp av pthread create -metoden genererte vi en tråd. I tilfelle feil, se om denne metoden returnerer en verdi som er mindre enn 0, noe som indikerer at trådopprettelsesprosessen mislyktes.
Etter det blir tråden lagt i dvale i to sekunder ved å ringe søvnmetoden. Pthread Kill -prosedyren er da blitt påberopt, og tråd -ID og signal Sigusr1 er blitt gitt til den. Bruken av SIGUSR1 og SIGUSR2 -signaler avhenger av brukerens krav. Hvis du implementerer en signalbehandler for dem i applikasjonen som mottar signalet, er de spesielt nyttige under kommunikasjon mellom prosessen. Den neste linjen gjør en betinget sjekk som vil bekrefte om tråddrapprosessen mislyktes, og om en feilmelding ble skrevet ut ved hjelp av Perror -setningen. I tilfelle suksess har vi kalt Pthread_Join -metoden, som tilbyr en enkel mekanisme som gjør det mulig for en applikasjon å vente på at en tråd skal fullføre. Senere sjekket vi om denne prosessen ikke klarte å skrive ut en feilmelding.
Lukk VIM -redaktøren etter å ha lagt inn koden ved å treffe rømningsnøkkelen og: X -kommandoen. Sett sammen koden etter det ved å bruke en C -kompilator etter eget valg, og sørg for at den produserer ønsket utgangsfil. For å bygge koden, skriver du kommandoene som er vist nedenfor. Eventuelle feil vises på terminalskjermen hvis de oppstår. Ingenting vil vises på skjermen etter en vellykket samling.
Kjør utgangsfilen for å se meldingen om at tråden utfører, og indikerte at det ikke var noen feil etter å ha ringt tråden for å drepe funksjonen og at alt gikk greit fra trådoppretting gjennom tråddrap til trådforbindelsesfunksjoner. For å oppnå ønsket utfall, skriv den påfølgende kommandoen på skjermen.
La oss gjøre noen endringer i koden, så skriv VIM -kommandoen sammen med C -filnavnet. For å oppnå ønsket utfall, skriv den påfølgende kommandoen på skjermen.
Den betingede uttalelsen etter modifiseringen av tråden sammenføyningsmetoden, der vi sjekket for å se om trådforbindelsesmetoden hadde satt trådstatusvariabelen til større enn eller lik 1, som indikerer en vellykket operasjon, er fraværende fra kodelinjene nedenfor. Hvis dette er vellykket, vil vi vise en melding på skjermen som sier: “Tråd som blir vellykket.”. En annen mindre endring i koden er at Tråd_killfunksjonen nå er plassert etter tråden Tråd_joinfunksjonens betingede uttalelse. Dette betyr at kommunikasjon mellom prosessen nå vil finne sted etter tråden_join-funksjonen.
For å oppdatere utdatafilen, kompiler du koden på nytt. Denne kommandoen vil kompilere C -filen som inneholder trådkoden. For å oppnå ønsket utfall, skriv den påfølgende kommandoen på skjermen.
Kjør koden nå, og du vil se at den med hell trykket på trådens sammenføyningsmetode på skjermen. Trådutførelsen vises før samtalen til skjermutgangsfunksjonen. For å oppnå ønsket utfall, skriv den påfølgende kommandoen på skjermen.
Konklusjon
Dette handler om demonstrasjonen av en Pthread_Kill () -funksjon av C for å be om at et signal skal rettes til den valgte tråden. Vi har diskutert et detaljert eksempel på C ved å bruke Pthread_Kill -funksjonen i den for å sende et signal til en bestemt metode når det gjelder avslutning av en samtalefunksjon. Dette handler om pthread_kill. Håper du liker det.