Files
concurrency-in-action/source/listing_2.4.cpp
2018-10-18 00:40:34 -05:00

62 lines
890 B
C++

#include <string>
#include <thread>
void
open_document_and_display_gui(std::string const& filename)
{
}
bool
done_editing()
{
return true;
}
enum command_type { open_new_document };
struct user_command {
command_type type;
user_command() : type(open_new_document) {}
};
user_command
get_user_input()
{
return user_command();
}
std::string
get_filename_from_user()
{
return "foo.doc";
}
void
process_user_input(user_command const& cmd)
{
}
void
edit_document(std::string const& filename)
{
open_document_and_display_gui(filename);
while (!done_editing()) {
user_command cmd = get_user_input();
if (cmd.type == open_new_document) {
std::string const new_name = get_filename_from_user();
std::thread t(edit_document, new_name);
t.detach();
}
else {
process_user_input(cmd);
}
}
}
int
main()
{
edit_document("bar.doc");
}