Pull to refresh
73.02

C++ *

General-purpose programming language. It has imperative, object-oriented and generic programming features, while also providing facilities for low-level memory manipulation

Show first
Rating limit
Level of difficulty

Exploring a possible implementation of non-blocking IO by writing a server on pure syscalls

Reading time 11 min
Views 1.1K
C++ **nix *
Translation

How do people usually write a server if they don't really care about performance? A program starts, then starts accepting incoming connections from clients and starts a new thread for each client, which is engaged in servicing this client. If you use framework, like Spring or Flask or Poco there, then it does something like this inside itself - the only difference is the threads can be reused, that is, taken from a certain pool. It's all quite convenient, but not too effective (and Spring is bad). Most likely, your threads serving clients do not live long and most of the time they are waiting either to receive data from the client or to send it to the client - that is, they are waiting for some system calls to return. Creating an OS thread is quite an expensive operation, as is context switching between OS threads. If you want to be able to serve a lot of customers efficiently, you need to come up with something else. For example, callbacks, but they are pretty inconvenient (though there are different opinions on this).

Another option is to use non-blocking I/O in combination with some kind of implementation of user-space threads (fibers). In this article I will show you how to write all this with your own hands.

Read more
Total votes 1: ↑1 and ↓0 +1
Comments 4

On the difference between regular functions and Lambdas

Level of difficulty Medium
Reading time 11 min
Views 1.2K
Python *Java *C++ *Assembler *

The point of this article is to explore Lambda functions, their dirrerences from regular functions and how they are implemented, based on C++, Python and Java programming languages.

Throughout this article I will be using godbolt.org to compile code and see machine code or byte code.

Read more
Total votes 2: ↑2 and ↓0 +2
Comments 2

Technical Note. From C++1998 to C++2020

Reading time 1 min
Views 1.5K
C++ *

This technical note is devoted to covering information regarding all primary C++ programming language standards: C++03/98/11/14/17/20.

I am glad to share a technical note with some details regarding the C and all primary C++ programming language standards based on my experience and materials from the Reference Section of this document.

As of August 15, 2022, this technical note in PDF format consists of 72 pages.

Read more
Total votes 6: ↑2 and ↓4 -2
Comments 2

Electron + web camera (cpp-ffmpeg)

Reading time 8 min
Views 2.3K
C++ *Development for MacOS *ReactJS *
Recovery mode
Sandbox

An example of using Electron + React JS and a native ffmpeg addon to access a webcamera

This guide may be helpful to someone who is trying to find a way
to work with Electron if they need to use a c++ library or code

I was looking for a more realistic example than a simple 'hello world' and i didn't succeed

Here are the links in advance:

- electron - https://github.com/khomin/electron_camera_ffmpeg

- addon - https://github.com/khomin/electron_ffmpeg_addon_camera

So let me share my experience...

Read more
Total votes 3: ↑3 and ↓0 +3
Comments 0

How PVS-Studio prevents rash code changes, example N4

Reading time 2 min
Views 877
PVS-Studio corporate blog C++ *Development Management *

Blender, PVS-Studio, std::clamp
If you regularly use a static code analyzer, you can save time on guessing why the new code doesn't work as planned. Let's look at another interesting error — the function broke during refactoring, and no one noticed that. No one — except for PVS-Studio that can automatically scan the project and email the report to us.

Read more →
Total votes 2: ↑1 and ↓1 0
Comments 0

PVS-Studio checks the code of Flipper Zero dolphin

Reading time 12 min
Views 1.3K
PVS-Studio corporate blog Open source *C++ *C *Programming microcontrollers *

Flipper Zero + PVS-Studio


Flipper Zero is an open-source multi-tool for geeks and penetration testers. It so happened that the Flipper Zero project and the PVS-Studio analyzer crossed paths. A philosophical question: should we check the project, if the project developers have already started fixing errors? Let's try to do this.

Read more →
Total votes 6: ↑5 and ↓1 +4
Comments 0

Even small projects have bugs, or how PVS-Studio checked Blend2D

Reading time 11 min
Views 735
PVS-Studio corporate blog Open source *C++ *C *

We often check large projects because it's easier to find bugs there. What if we try PVS-Studio on a small project? In this article we analyze Blend2D — a library for vector 2D graphics. Let's look at what we found.


0894_Blend2d/image1.png


Introduction


It's no secret that large projects have fascinating errors. It's not just "the larger the codebase is – the more errors we can find". It's also a known fact that the density of errors grows along with the codebase. That's why we love checking large projects — to treat you with a variety of "yummy" and tricky errors and typos. Besides, it's always interesting to search through a huge project with lots of dependencies, legacy code, and other stuff.


Today I'm moving away from this tradition. I decided to take a small project and see what PVS-Studio can find there. I chose Blend2D — branch master, commit c484790.

Read more →
Total votes 3: ↑2 and ↓1 +1
Comments 0

Virtual function calls in constructors and destructors (C++)

Reading time 6 min
Views 2.9K
PVS-Studio corporate blog Programming *C++ *

Virtual function calls in constructors (C++)
In different programming languages, the behavior of virtual functions differs when it comes to constructors and destructors. Incorrect use of virtual functions is a classic mistake. Developers often use virtual functions incorrectly. In this article, we discuss this classic mistake.

Read more →
Total votes 2: ↑2 and ↓0 +2
Comments 0

Thanks, Mario, but the code needs fixing — checking TheXTech

Reading time 12 min
Views 840
PVS-Studio corporate blog Open source *C++ *Game development *

It's cool when enthusiastic developers create a working clone of a famous game. It's even cooler when people are ready to continue the development of such projects! In this article, we check TheXTech with PVS-Studio. TheXTech is an open implementation of the game from the Super Mario universe.


0889_TheXTech/image1.png

Read more →
Total votes 3: ↑3 and ↓0 +3
Comments 0

Authors' contribution