Re[3]: тестовые вопросы
От: Abyx Россия  
Дата: 20.06.12 09:10
Оценка:
Здравствуйте, Alexander Pazdnikov, Вы писали:

AP>Здравствуйте, Abyx, Вы писали:


A>>sizeof(S), который не меньше суммы sizeof ее членов. выравнивание не указано, и компилятор может использовать любое выравнивание.

A>>btw, в своем ответе Вы забыли про alignment=1
AP>спасибо, а на практике это 8-битные процы, аля atmega, z80, i8080?
на практике это #pragma pack(1) и например передача структур по сети

A>>тогда это не double-ended queue, раз мы не можем удалять элементы с конца за О(1)


AP>В концах можем удалять и добавлять элементы за O(1), для этого есть указатели head и tail.

как удалить с конца если мы не знаем предыдущий элемент?

A>>откуда взялось 6 я не понял, может вы имели ввиду что код выполняется в цикле? так и надо писать %)


AP>Имел в виду, что при проходе обоих потоков через этот код, sum суммарно увеличится либо на 3, либо на 6. Зависит от переключения контекста в другой поток при выполнении sum += a.

AP>полагаю, что b == 1 и a == 3 в обоих потоках при любом раскладе.

Вы имеете ввиду такой код?
int sum = 0;
int a, b;

void thread_fn()
{
  a = 3;
  b = 1;

  if (b == 1)
    sum += a;
}

int main()
{
  thread t1(thread_fn);
  thread t2(thread_fn);
  t1.join();
  t2.join();
  return sum;
}


так sum всегда будет 6, в любом потоке перед if a и b будут 3 и 1
In Zen We Trust
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.