Czy 2 wątki mogą jednocześnie odwołać się do tej samej metody?

Czy 2 wątki mogą jednocześnie odwołać się do tej samej metody?
SA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 24
0

Cześć, mam pytanie :)
Mój kod wygląda mniej więcej tak:

Kopiuj
private void error(string thread, string kod)
{
	int startPos = kod.LastIndexOf("error_code\":") + ("error_code\":").Length;
	 int length = kod.IndexOf(",\"error_msg") - startPos;
	int err_code;
	int.TryParse(kod.Substring(startPos, length), out err_code);
	if (err_code == 1)
	{
		...
	}
	return;
}

private void thread1()
{
	...
	if (kod.Contains("error_code\":")
		error("thread1", kod);
	...
}

private void thread2()
{
	...
	if (kod.Contains("error_code\":")
		error("thread2", kod);
	...
}

A pytanie brzmi następująco, czy 2 wątki mogą w tej samej chwili odwołać się do tej samej metody? Jeżeli nie, to jak mogę coś takiego osiągnąć?

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
3

Jeśli nie ma tam jakiejś synchronizacji która by to wykluczała z jakiegoś powodu, to oczywiście że mogą.

several
  • Rejestracja: dni
  • Ostatnio: dni
2

Upraszczając można o tym myśleć tak, że każdy wątek ma swoją kopię kodu. Więc jeśli nie używasz w metodzie zmiennych globalnych, albo ogólnie zasobu spoza metody (np. zmiennej prywatnej klasy), to metodę można bez obaw używać z różnych wątków.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.