Sobes.tech
Junior — Middle

Kas notiek sistēmas vai programmas iekšienē, kad buferis pilnībā aizpildās, un kā tas var novest pie aizsērēšanas?

sobes.tech AI

Atbilde no AI

Kad Go programmā buferis pilnībā aizpildās, turpmākais ieraksts tajā tiek bloķēts līdz brīdim, kad dati tiek izlasīti no bufera. Tas ir saistīts ar to, ka buferis ir ierobežota izmēra.

Ja datu ražotājs (writer) turpina mēģināt rakstīt pilnajā buferī, un patērētājs (reader) neizlasa datus, ražošanas gorutīna tiks bloķēta. Ja tajā pašā laikā patērētājs arī gaida ražotāju (piemēram, savstarpējas bloķēšanas dēļ), rodas savstarpējas bloķēšanas (deadlock) situācija, kas noved pie programmas apstāšanās.

Piemērs: kanāls ar 2 izmēra buferi, kurā dati tiek rakstīti ātrāk nekā tiek lasīti.