
- Главная
- Каталог
- Интернет технологии
- С/С++ Portal | Программирование
С/С++ Portal | Программирование
Присоединяйтесь к нашему каналу и погрузитесь в мир для C/C++-разработчика
Статистика канала
#include <stdio.h>
#include <stdlib.h>
/* структура узла дерева */
struct tree_node {
int value;
struct tree_node *left_child;
struct tree_node *right_child;
};
/* создать новый узел дерева */
struct tree_node* create_node(int value) {
struct tree_node* new_node = malloc(sizeof(struct tree_node));
new_node->value = value;
new_node->left_child = NULL;
new_node->right_child = NULL;
return new_node;
}
/* вставить значение в бинарное дерево поиска */
struct tree_node* insert_into_tree(struct tree_node* root, int value) {
struct tree_node** current = &root;
while (*current) {
/* если меньше - идем влево, если больше - вправо */
current = (value < (*current)->value)
? &(*current)->left_child
: &(*current)->right_child;
}
*current = create_node(value);
return root;
}
/* вывести значения дерева в отсортированном порядке */
void print_sorted(struct tree_node* node) {
if (!node) return;
print_sorted(node->left_child);
printf("%d ", node->value);
print_sorted(node->right_child);
}
int main() {
struct tree_node* root = NULL;
int numbers[] = {50, 30, 70, 20, 40, 60, 80};
for (int i = 0; i < 7; i++) {
root = insert_into_tree(root, numbers[i]);
}
printf("дерево в отсортированном порядке: ");
print_sorted(root);
printf("\n");
return 0;
}{}
#include <stdio.h>
#include <stdint.h>
/* преобразовать порядок байт хоста в сетевой порядок (network byte order) */
uint32_t host_to_network_32(uint32_t host_value) {
return ((host_value >> 24) & 0xff) |
((host_value >> 8) & 0xff00) |
((host_value << 8) & 0xff0000) |
((host_value << 24) & 0xff000000);
}
/* преобразовать сетевой порядок байт обратно в порядок хоста */
uint32_t network_to_host_32(uint32_t network_value) {
return host_to_network_32(network_value); /* то же преобразование */
}
int main() {
uint32_t original_value = 0x12345678;
printf("исходное значение: 0x%08x\n", original_value);
uint32_t network_version = host_to_network_32(original_value);
printf("сетевой формат: 0x%08x\n", network_version);
uint32_t back_again = network_to_host_32(network_version);
printf("обратно как было: 0x%08x\n", back_again);
return 0;
}
{}
@branchHint(.likely);
if (actualSuffix.len < 4) {
const xor =
(actualSuffix[0] ^ patternSuffix[0])
| (actualSuffix[actualSuffix.len - 1] ^ patternSuffix[actualSuffix.len - 1])
| (actualSuffix[actualSuffix.len / 2] ^ patternSuffix[actualSuffix.len / 2]);
return xor == 0;
}{}
Это разворачивается в красивый ассемблер:
без стека, без переходов
нулевое давление на регистры
микро-опы легко раскидывают эти qword'ы в параллель
👉 @Cpportal
#include <stdio.h>
#include <sys/sem.h>
int main() {
// Create semaphore set with 2 sems
int id = semget(IPC_PRIVATE, 2, 0600);
// Initialize both to 1 (unlocked)
semctl(id, 0, SETVAL, 1);
semctl(id, 1, SETVAL, 1);
struct sembuf ops[2] = {
{0, -1, SEM_UNDO}, // Acquire sem 0
{1, -1, SEM_UNDO} // Acquire sem 1
};
printf("Acquiring both semaphores...\n");
semop(id, ops, 2); // Atomic!
printf("Got both. Doing critical work...\n");
// Release
ops[0].sem_op = 1;
ops[1].sem_op = 1;
semop(id, ops, 2);
printf("Released.\n");
semctl(id, 0, IPC_RMID); // Cleanup
return 0;
}{}
Видишь флаг SEM_UNDO? Это твоя страховка.
Если процесс упадет или его убьют, пока он держит эти семафоры, ядро автоматически откатит операции.
Больше никаких “зомби-локов”, которые морозят всю систему из-за одного segfault.
Тут же есть режим wait-for-zero.
Поставь sem_op в 0, и процесс будет блокироваться, пока значение семафора не станет ровно нулем.
Это удобно для барьеров: например, подождать, пока все воркеры отпустят ресурсы, прежде чем координатор пойдет дальше.
Отзывы канала
всего 2 отзыва
- Добавлен: Сначала новые
- Добавлен: Сначала старые
- Оценка: По убыванию
- Оценка: По возрастанию
Каталог Телеграм-каналов для нативных размещений
С/С++ Portal | Программирование — это Telegam канал в категории «Интернет технологии», который предлагает эффективные форматы для размещения рекламных постов в Телеграмме. Количество подписчиков канала в 16.6K и качественный контент помогают брендам привлекать внимание аудитории и увеличивать охват. Рейтинг канала составляет 12.2, количество отзывов – 2, со средней оценкой 5.0.
Вы можете запустить рекламную кампанию через сервис Telega.in, выбрав удобный формат размещения. Платформа обеспечивает прозрачные условия сотрудничества и предоставляет детальную аналитику. Стоимость размещения составляет 6293.7 ₽, а за 26 выполненных заявок канал зарекомендовал себя как надежный партнер для рекламы в TG. Размещайте интеграции уже сегодня и привлекайте новых клиентов вместе с Telega.in!
Вы снова сможете добавить каналы в корзину из каталога
Комментарий