Делайте кольцевой буфер задач. Указатели на начало и конец. Если
указатели совпадают при выгрузке - значит, задач нет. Если
совпадают при загрузке задачи - значит, переполнение.
Обрабатывайте. А в самом буфере - элементы - структуры. Как минимум, цифра - код задачи. Как максимум - ещё пара значений - параметр (например, размер транзакции) и указатель откуда взять данные или куда их положить, в зависимости от кода задачи. Дополнительно можно ещё и метку времени постановки задачи в очередь ставить, для таймаута, если позднее исполнение бесполезно.
P.S. код задачи удобно объявлять списком enum.