У меня есть класс:Как заблокировать 2 разных метода одного и того же класса за одно и то же время?
public class petri {
public int[] nodes = new int[3];
public void petri (int n) {
this.nodes[1] = n;
this.nodes[2] = 0;
this.nodes[3] = 0;
}
public bool start() {
if (this.nodes[1] != 0) {
this.nodes[1]--;
this.nodes[2]++;
return true;
} else
return false;
}
public bool end() {
if (this.nodes[2] != 0) {
this.nodes[2]--;
this.nodes[3]++;
return true;
} else
return false;
}
}
Я использую этот класс из параллельных потоков, и нужно сделать так: начать() и конец() functuions должен использоваться только 1 нить в 1 раз. Я имею в виду, если thread1
начала вызова(), thread2
Weit до tread1
конца выполнения пуска() и до этого thread2
нельзя назвать начать() и конец()
Обратите внимание, что если вам требуется более одного замка, все становится более волосатым, и вы идете чтобы иметь дело с вещами, такими как порядок блокировки и эскалация блокировок (возможно). –
О, джайс. Во всяком случае мне нужен только один замок, так что спасибо! – InfernumDeus
BTW Это, скорее всего, приведет к запуску 'start' несколько раз, за которым следует' end' несколько раз. – Aron