Ik ben begonnen met asynchroon maken van mijn ASP .NET Web Api vanuit de gedachte dat mijn server straks meer verzoeken tegelijkertijd kan afhandelen. Ik ben begonnen met het doorlezen van het boek "Async in C# 5.0". Daarnaast is er een aantal artikelen die ik doorgelezen heb. Er is nog een aantal dingen die niet helemaal duidelijk zijn.
Op een gegeven moment komt mijn programma uit bij de await aanroep. De code die ik daarmee aanroep wordt in een andere thread uitgevoerd.
Vraag 1: kan ik vanuit de code die asynchroon wordt uitgevoerd een functie aanroep die niet de async modifier bevat? Wordt dan de aanroepende code ook synchroon uitgevoerd? Bijvoorbeeld
Vraag 2: Hoe vaak kom je problemen tegen in code die async await wordt uitgevoerd en die ontstaan zijn door multithreading problematiek. Overal lees je in artikelen over race conditions en deadlock problemen die erg moeilijk zijn op te lossen. Maar ik kom erg weinig artikelen tegen die vertellen hoe je deze problemen kan voorkomen. Ik ben dus niet op zoek naar hoe een mutex, locks en semaphores werken, maar ik ben op zoek naar
a.. moet ik ze uberhaupt inzetten bij async await?
b.. hoe kan ik zoveel mogelijk voorkomen dat ik ze nodig heb? Ik lees iets over "less stateful code" en "referential transparancy", maar dat zijn maar twee zinnen. Googlen op die termen levert niet veel bruikbaars op.
c.. wanneer moet ik ze inzetten? Moet ik per definitie alles wat ik schrijf naar een variabele locken?
Enige hulp bij deze vragen zou zeer welkom zijn.
Op een gegeven moment komt mijn programma uit bij de await aanroep. De code die ik daarmee aanroep wordt in een andere thread uitgevoerd.
Vraag 1: kan ik vanuit de code die asynchroon wordt uitgevoerd een functie aanroep die niet de async modifier bevat? Wordt dan de aanroepende code ook synchroon uitgevoerd? Bijvoorbeeld
C#:
1
2
3
4
5
6
7
8
9
| public async Task<int> ExampleMethodAsync() { Method(); } public void Method() { // } |
Vraag 2: Hoe vaak kom je problemen tegen in code die async await wordt uitgevoerd en die ontstaan zijn door multithreading problematiek. Overal lees je in artikelen over race conditions en deadlock problemen die erg moeilijk zijn op te lossen. Maar ik kom erg weinig artikelen tegen die vertellen hoe je deze problemen kan voorkomen. Ik ben dus niet op zoek naar hoe een mutex, locks en semaphores werken, maar ik ben op zoek naar
a.. moet ik ze uberhaupt inzetten bij async await?
b.. hoe kan ik zoveel mogelijk voorkomen dat ik ze nodig heb? Ik lees iets over "less stateful code" en "referential transparancy", maar dat zijn maar twee zinnen. Googlen op die termen levert niet veel bruikbaars op.
c.. wanneer moet ik ze inzetten? Moet ik per definitie alles wat ik schrijf naar een variabele locken?
Enige hulp bij deze vragen zou zeer welkom zijn.
http://hawvie.deviantart.com/